#include "ipcp_auto.h"
#include <string.h>
#include <vp/TIMEOUT_RX.h>
#include <vp/CDM_RX.h>
#include "mockconfig.h"
#include "vp/CCSM_RX.h"
#include "vp/SWSM_RX.h"
#include "vp/FPL_RX.h"
#include "vp/SwcOdoOfTripInfo.h"
// VP Radio : 50560
// AP Radio :

// service id
#define service_vgm 49

// operation id
#define TrunkOpenHmiReqOpID (0x163)
#define TopPosTrFromHmiOpID (0x15e)

#define CP_SERVICE_NORMAL_PORT 50340
#define CP_SERVICE_TIME_PORT 50601
#define CP_SERVICE_AVAS_PORT 50602

void received_cb(ipcp_packet_t *packet, ipcp_peer_t peer);

void error_cb(ipcp_packet_t *ipcp_packet, ipcp_stack_err_t error);

void init_service_side(ipcp_transport_conf_t *config);

void init_client_side(ipcp_transport_conf_t *config);

static uint16_t serid = 0;
static uint16_t opid[MAX_LEN];
static uint16_t op_size;

static std::string pro_value = "";

ipcp_packet_t *upper_packet = NULL;

static ipcp_peer_t udp_peer = {
        .sk_type = IPCP_TRANSPORT_UDP,
        .peer_ip = PEER_CLIENT_IP,
        .peer_port = PEER_CLIENT_PORT,
};

static ipcp_peer_t udp_peer_dim_normal = {
        .sk_type = IPCP_TRANSPORT_UDP,
        .peer_ip = PEER_CLIENT_IP,
        .peer_port = CP_SERVICE_NORMAL_PORT,
};

ipcp_callbacks_t callbacks = {
        .ipcp_received_cb = received_cb,
        .error_cb = error_cb,
};

void received_cb(ipcp_packet_t *packet, ipcp_peer_t peer) {
    LOGE("####接收到回调######");
    std::cout << "####接收到回调######" << "\n";
    upper_packet = packet;

    printf("%s, Client received ipcp header : sid: %hu, sender_handler_id : %#x \n", __func__,
           upper_packet->header.service_id, upper_packet->header.senderHandleId);
    LOGE("%s, Client received ipcp header : sid: %hu, sender_handler_id : %#x \n", __func__,
         upper_packet->header.service_id, upper_packet->header.senderHandleId);
    printf("%s, Client payload: %s \n", __func__, upper_packet->payload);
    LOGE("%s, Client payload: %s \n", __func__, upper_packet->payload);
    uint32_t sender_handler_id = upper_packet->header.senderHandleId;
    // 赋值，用于get接口的结果
    pro_value = "";
    uint16_t tmp_service_id = upper_packet->header.service_id;
    uint16_t tmp_operation_id = upper_packet->header.operation_id;
    LOGE("Client received ipcp header : sid: %hu, operation_id : %hu \n", tmp_service_id,
         tmp_operation_id);
    switch (tmp_service_id) {
        case service_vgm:
            if (tmp_operation_id == TrunkOpenHmiReqOpID ||
                tmp_operation_id == TopPosTrFromHmiOpID) {
                int32_t *value = (int32_t *) upper_packet->payload;
                pro_value = std::to_string(value[0]);
                LOGE("pro_value: %s \n", pro_value.c_str());
            }
            break;
        default:
            break;
    }
}

bool get_alive() {

}

void set_alive(bool a) {

}

void error_cb(ipcp_packet_t *ipcp_packet, ipcp_stack_err_t error) {
    printf("%s, Client test demo... %d", __func__, error);
}

bool set_config(uint16_t service_id, uint16_t oper_ids[], int size) {
    serid = service_id;
    LOGE("++++++kaishi memcpy++++++++++");
    op_size = size;
    for (int b = 0; b < size; b++) {
        LOGE("++++++opids[%d]: %d", b, oper_ids[b]);
        opid[b] = oper_ids[b];
    }
    LOGE("serid: %d", serid);
    LOGE("op_size: %d", op_size);
    std::cout << "serid: " << serid << "\n";
    std::cout << "op_size: " << op_size << "\n";

    ipcp_transport_conf_t config;
    ipcp_stack_err_t error_code;

    init_client_side(&config);
    LOGE("#### start ipcp_setup_with_opids ######");
    set_log_tag("Client");

    error_code = ipcp_setup_with_opids(config, &callbacks, opid, op_size);
    LOGE("ipcp_setup_with_opids result: %u",error_code);
    if (error_code == 0) {
        for (int i = 0; i < op_size; i++) {
            ipcp_set_wfa_retry_count(config.service_id, opid[i], 0);
            ipcp_set_wfr_retry_count(config.service_id, opid[i], 0);
        }
        return true;
    }
    return false;
}

void init_client_side(ipcp_transport_conf_t *config) {
    // config->service_id = SERVICE_ID;
    std::cout << "init_client_side serid: " << serid << "\n";
    config->service_id = serid;
    strcpy(config->host_ip, LOCAL_SERVER_IP);
    config->host_port = LOCAL_SERVER_PORT;
    config->sk_type = IPCP_TRANSPORT_UDP;
    config->vlan = 6;
    config->priority = 5;
}

bool send_message(int ser_id, int operation_id, void *msg, int msg_len) {
    ipcp_stack_err_t error_code;
    ipcp_packet_t *packet;

    printf("#1 Client Send UDP Request to Server\n");

    uint16_t service_id = (uint16_t) ser_id;
    uint16_t oper_id = (uint16_t) operation_id;
    uint8_t oper_type = IPCP_OPERATION_NOTIFICATION;
    uint8_t payload_type = IPCP_DATA_NORMAL;
    std::cout << "####################\n";
    LOGE("service_id: %d，oper_id：%d  \n", service_id, oper_id);
    packet = build_ipcp_packet(service_id, oper_id, oper_type, payload_type, msg, msg_len);
    error_code = ipcp_send(udp_peer, packet);
    std::cout << "operation_id:" << packet->header.operation_id << "\n";
    printf("#2 Client Send UDP Request to Server\n");
    LOGE("#2 Client Send UDP Request to Server\n");

    return error_code == STACK_SEND_MSG_SUCCESS;
}



bool send_message_dim_normal(int ser_id, int operation_id, void *msg) {
    ipcp_stack_err_t error_code;
    ipcp_packet_t *packet;

    printf("#1 Client Send UDP Request to Server\n");

    uint16_t service_id = (uint16_t) ser_id;
    uint16_t oper_id = (uint16_t) operation_id;
    uint8_t oper_type = IPCP_OPERATION_NOTIFICATION;
    uint8_t payload_type = IPCP_DATA_NORMAL;
    std::cout << "####################\n";
    LOGE("service_id: %d，oper_id：%d  \n", service_id, oper_id);
    packet = build_ipcp_packet(service_id, oper_id, oper_type, payload_type, msg, MAX_PAYLOAD);
    error_code = ipcp_send(udp_peer_dim_normal, packet);
    std::cout << "operation_id:" << packet->header.operation_id << "\n";
    printf("#2 Client Send UDP Request to Server\n");
    LOGE("#2 Client Send UDP Request to Server\n");

    return error_code == STACK_SEND_MSG_SUCCESS;
}



std::string get_message(int ser_id, int operation_id) {
    return "";
}


bool set_int_signal(int ser_id, int operation_id, int32_t availability, int32_t data, int32_t ff,
                    int32_t status) {

    //组装
    uint8_t buffer[MAX_PAYLOAD] = {0};
    PAIntFuncType paIntFuncType;
    paIntFuncType.availability = ntohl(availability);
    paIntFuncType.data = ntohl(data);
    paIntFuncType.format = ntohl(ff);
    paIntFuncType.status = ntohl(status);

    _OpAudioRadio_Notification notification;
    notification.paarwarningvlo = paIntFuncType;
    memcpy(buffer, &notification, sizeof(_OpAudioRadio_Notification));

    bool res = send_message(ser_id, operation_id, buffer, sizeof(_OpAudioRadio_Notification));

//    bool int_res = set_singal_status(property_id, buffer);
    return res;
}

bool set_carconfig_signal(int ser_id, int operation_id, int configs[], uint8_t values[], int len) {
    uint8_t buffer[MAX_PAYLOAD] = {0};
    _OpCARCONFIG_Notification notification;
    memset(&notification, 0, sizeof(notification));
    LOGE("++++++cf_size len: %d", len);
    for (int i = 0; i < len; i++) {
        switch (configs[i]) {
            case 0:
                notification.carconfig0 = values[i];
            case 1:
                notification.carconfig1 = values[i];
                break;
            case 2:
                notification.carconfig2 = values[i];
                break;
            case 3:
                notification.carconfig3 = values[i];
                break;
            case 4:
                notification.carconfig4 = values[i];
                break;
            case 5:
                notification.carconfig5 = values[i];
                break;
            case 6:
                notification.carconfig6 = values[i];
                break;
            case 7:
                notification.carconfig7 = values[i];
                break;
            case 8:
                notification.carconfig8 = values[i];
                break;
            case 9:
                notification.carconfig9 = values[i];
                break;
            case 10:
                notification.carconfig10 = values[i];
                break;
            case 11:
                notification.carconfig11 = values[i];
                break;
            case 12:
                notification.carconfig12 = values[i];
                break;
            case 13:
                notification.carconfig13 = values[i];
                break;
            case 14:
                notification.carconfig14 = values[i];
                break;
            case 15:
                notification.carconfig15 = values[i];
                break;
            case 16:
                notification.carconfig16 = values[i];
                break;
            case 17:
                notification.carconfig17 = values[i];
                break;
            case 18:
                notification.carconfig18 = values[i];
                break;
            case 19:
                notification.carconfig19 = values[i];
                break;
            case 20:
                notification.carconfig20 = values[i];
                break;
            case 21:
                notification.carconfig21 = values[i];
                break;
            case 22:
                notification.carconfig22 = values[i];
                break;
            case 23:
                notification.carconfig23 = values[i];
                break;
            case 24:
                notification.carconfig24 = values[i];
                break;
            case 25:
                notification.carconfig25 = values[i];
                break;
            case 26:
                notification.carconfig26 = values[i];
                break;
            case 27:
                notification.carconfig27 = values[i];
                break;
            case 28:
                notification.carconfig28 = values[i];
                break;
            case 29:
                notification.carconfig29 = values[i];
                break;
            case 30:
                notification.carconfig30 = values[i];
                break;
            case 31:
                notification.carconfig31 = values[i];
                break;
            case 32:
                notification.carconfig32 = values[i];
                break;
            case 33:
                notification.carconfig33 = values[i];
                break;
            case 34:
                notification.carconfig34 = values[i];
                break;
            case 35:
                notification.carconfig35 = values[i];
                break;
            case 36:
                notification.carconfig36 = values[i];
                break;
            case 37:
                notification.carconfig37 = values[i];
                break;
            case 38:
                notification.carconfig38 = values[i];
                break;
            case 39:
                notification.carconfig39 = values[i];
                break;
            case 40:
                notification.carconfig40 = values[i];
                break;
            case 41:
                notification.carconfig41 = values[i];
                break;
            case 42:
                notification.carconfig42 = values[i];
                break;
            case 43:
                notification.carconfig43 = values[i];
                break;
            case 44:
                notification.carconfig44 = values[i];
                break;
            case 45:
                notification.carconfig45 = values[i];
                break;
            case 46:
                notification.carconfig46 = values[i];
                break;
            case 47:
                notification.carconfig47 = values[i];
                break;
            case 48:
                notification.carconfig48 = values[i];
                break;
            case 49:
                notification.carconfig49 = values[i];
                break;
            case 50:
                notification.carconfig50 = values[i];
                break;
            case 51:
                notification.carconfig51 = values[i];
                break;
            case 52:
                notification.carconfig52 = values[i];
                break;
            case 53:
                notification.carconfig53 = values[i];
                break;
            case 54:
                notification.carconfig54 = values[i];
                break;
            case 55:
                notification.carconfig55 = values[i];
                break;
            case 56:
                notification.carconfig56 = values[i];
                break;
            case 57:
                notification.carconfig57 = values[i];
                break;
            case 58:
                notification.carconfig58 = values[i];
                break;
            case 59:
                notification.carconfig59 = values[i];
                break;
            case 60:
                notification.carconfig60 = values[i];
                break;
            case 61:
                notification.carconfig61 = values[i];
                break;
            case 62:
                notification.carconfig62 = values[i];
                break;
            case 63:
                notification.carconfig63 = values[i];
                break;
            case 64:
                notification.carconfig64 = values[i];
                break;
            case 65:
                notification.carconfig65 = values[i];
                break;
            case 66:
                notification.carconfig66 = values[i];
                break;
            case 67:
                notification.carconfig67 = values[i];
                break;
            case 68:
                notification.carconfig68 = values[i];
                break;
            case 69:
                notification.carconfig69 = values[i];
                break;
            case 70:
                notification.carconfig70 = values[i];
                break;
            case 71:
                notification.carconfig71 = values[i];
                break;
            case 72:
                notification.carconfig72 = values[i];
                break;
            case 73:
                notification.carconfig73 = values[i];
                break;
            case 74:
                notification.carconfig74 = values[i];
                break;
            case 75:
                notification.carconfig75 = values[i];
                break;
            case 76:
                notification.carconfig76 = values[i];
                break;
            case 77:
                notification.carconfig77 = values[i];
                break;
            case 78:
                notification.carconfig78 = values[i];
                break;
            case 79:
                notification.carconfig79 = values[i];
                break;
            case 80:
                notification.carconfig80 = values[i];
                break;
            case 81:
                notification.carconfig81 = values[i];
                break;
            case 82:
                notification.carconfig82 = values[i];
                break;
            case 83:
                notification.carconfig83 = values[i];
                break;
            case 84:
                notification.carconfig84 = values[i];
                break;
            case 85:
                notification.carconfig85 = values[i];
                break;
            case 86:
                notification.carconfig86 = values[i];
                break;
            case 87:
                notification.carconfig87 = values[i];
                break;
            case 88:
                notification.carconfig88 = values[i];
                break;
            case 89:
                notification.carconfig89 = values[i];
                break;
            case 90:
                notification.carconfig90 = values[i];
                break;
            case 91:
                notification.carconfig91 = values[i];
                break;
            case 92:
                notification.carconfig92 = values[i];
                break;
            case 93:
                notification.carconfig93 = values[i];
                break;
            case 94:
                notification.carconfig94 = values[i];
                break;
            case 95:
                notification.carconfig95 = values[i];
                break;
            case 96:
                notification.carconfig96 = values[i];
                break;
            case 97:
                notification.carconfig97 = values[i];
                break;
            case 98:
                notification.carconfig98 = values[i];
                break;
            case 99:
                notification.carconfig99 = values[i];
                break;
            case 100:
                notification.carconfig100 = values[i];
                break;
            case 101:
                notification.carconfig101 = values[i];
                break;
            case 102:
                notification.carconfig102 = values[i];
                break;
            case 103:
                notification.carconfig103 = values[i];
                break;
            case 104:
                notification.carconfig104 = values[i];
                break;
            case 105:
                notification.carconfig105 = values[i];
                break;
            case 106:
                notification.carconfig106 = values[i];
                break;
            case 107:
                notification.carconfig107 = values[i];
                break;
            case 108:
                notification.carconfig108 = values[i];
                break;
            case 109:
                notification.carconfig109 = values[i];
                break;
            case 110:
                notification.carconfig110 = values[i];
                break;
            case 111:
                notification.carconfig111 = values[i];
                break;
            case 112:
                notification.carconfig112 = values[i];
                break;
            case 113:
                notification.carconfig113 = values[i];
                break;
            case 114:
                notification.carconfig114 = values[i];
                break;
            case 115:
                notification.carconfig115 = values[i];
                break;
            case 116:
                notification.carconfig116 = values[i];
                break;
            case 117:
                notification.carconfig117 = values[i];
                break;
            case 118:
                notification.carconfig118 = values[i];
                break;
            case 119:
                notification.carconfig119 = values[i];
                break;
            case 120:
                notification.carconfig120 = values[i];
                break;
            case 121:
                notification.carconfig121 = values[i];
                break;
            case 122:
                notification.carconfig122 = values[i];
                break;
            case 123:
                notification.carconfig123 = values[i];
                break;
            case 124:
                notification.carconfig124 = values[i];
                break;
            case 125:
                notification.carconfig125 = values[i];
                break;
            case 126:
                notification.carconfig126 = values[i];
                break;
            case 127:
                notification.carconfig127 = values[i];
                break;
            case 128:
                notification.carconfig128 = values[i];
                break;
            case 129:
                notification.carconfig129 = values[i];
                break;
            case 130:
                notification.carconfig130 = values[i];
                break;
            case 131:
                notification.carconfig131 = values[i];
                break;
            case 132:
                notification.carconfig132 = values[i];
                break;
            case 133:
                notification.carconfig133 = values[i];
                break;
            case 134:
                notification.carconfig134 = values[i];
                break;
            case 135:
                notification.carconfig135 = values[i];
                break;
            case 136:
                notification.carconfig136 = values[i];
                break;
            case 137:
                notification.carconfig137 = values[i];
                break;
            case 138:
                notification.carconfig138 = values[i];
                break;
            case 139:
                notification.carconfig139 = values[i];
                break;
            case 140:
                notification.carconfig140 = values[i];
                break;
            case 141:
                notification.carconfig141 = values[i];
                break;
            case 142:
                notification.carconfig142 = values[i];
                break;
            case 143:
                notification.carconfig143 = values[i];
                break;
            case 144:
                notification.carconfig144 = values[i];
                break;
            case 145:
                notification.carconfig145 = values[i];
                break;
            case 146:
                notification.carconfig146 = values[i];
                break;
            case 147:
                notification.carconfig147 = values[i];
                break;
            case 148:
                notification.carconfig148 = values[i];
                break;
            case 149:
                notification.carconfig149 = values[i];
                break;
            case 150:
                notification.carconfig150 = values[i];
                break;
            case 151:
                notification.carconfig151 = values[i];
                break;
            case 152:
                notification.carconfig152 = values[i];
                break;
            case 153:
                notification.carconfig153 = values[i];
                break;
            case 154:
                notification.carconfig154 = values[i];
                break;
            case 155:
                notification.carconfig155 = values[i];
                break;
            case 156:
                notification.carconfig156 = values[i];
                break;
            case 157:
                notification.carconfig157 = values[i];
                break;
            case 158:
                notification.carconfig158 = values[i];
                break;
            case 159:
                notification.carconfig159 = values[i];
                break;
            case 160:
                notification.carconfig160 = values[i];
                break;
            case 161:
                notification.carconfig161 = values[i];
                break;
            case 162:
                notification.carconfig162 = values[i];
                break;
            case 163:
                notification.carconfig163 = values[i];
                break;
            case 164:
                notification.carconfig164 = values[i];
                break;
            case 165:
                notification.carconfig165 = values[i];
                break;
            case 166:
                notification.carconfig166 = values[i];
                break;
            case 167:
                notification.carconfig167 = values[i];
                break;
            case 168:
                notification.carconfig168 = values[i];
                break;
            case 169:
                notification.carconfig169 = values[i];
                break;
            case 170:
                notification.carconfig170 = values[i];
                break;
            case 171:
                notification.carconfig171 = values[i];
                break;
            case 172:
                notification.carconfig172 = values[i];
                break;
            case 173:
                notification.carconfig173 = values[i];
                break;
            case 174:
                notification.carconfig174 = values[i];
                break;
            case 175:
                notification.carconfig175 = values[i];
                break;
            case 176:
                notification.carconfig176 = values[i];
                break;
            case 177:
                notification.carconfig177 = values[i];
                break;
            case 178:
                notification.carconfig178 = values[i];
                break;
            case 179:
                notification.carconfig179 = values[i];
                break;
            case 180:
                notification.carconfig180 = values[i];
                break;
            case 181:
                notification.carconfig181 = values[i];
                break;
            case 182:
                notification.carconfig182 = values[i];
                break;
            case 183:
                notification.carconfig183 = values[i];
                break;
            case 184:
                notification.carconfig184 = values[i];
                break;
            case 185:
                notification.carconfig185 = values[i];
                break;
            case 186:
                notification.carconfig186 = values[i];
                break;
            case 187:
                notification.carconfig187 = values[i];
                break;
            case 188:
                notification.carconfig188 = values[i];
                break;
            case 189:
                notification.carconfig189 = values[i];
                break;
            case 190:
                notification.carconfig190 = values[i];
                break;
            case 191:
                notification.carconfig191 = values[i];
                break;
            case 192:
                notification.carconfig192 = values[i];
                break;
            case 193:
                notification.carconfig193 = values[i];
                break;
            case 194:
                notification.carconfig194 = values[i];
                break;
            case 195:
                notification.carconfig195 = values[i];
                break;
            case 196:
                notification.carconfig196 = values[i];
                break;
            case 197:
                notification.carconfig197 = values[i];
                break;
            case 198:
                notification.carconfig198 = values[i];
                break;
            case 199:
                notification.carconfig199 = values[i];
                break;
            case 200:
                notification.carconfig200 = values[i];
                break;
            case 201:
                notification.carconfig201 = values[i];
                break;
            case 202:
                notification.carconfig202 = values[i];
                break;
            case 203:
                notification.carconfig203 = values[i];
                break;
            case 204:
                notification.carconfig204 = values[i];
                break;
            case 205:
                notification.carconfig205 = values[i];
                break;
            case 206:
                notification.carconfig206 = values[i];
                break;
            case 207:
                notification.carconfig207 = values[i];
                break;
            case 208:
                notification.carconfig208 = values[i];
                break;
            case 209:
                notification.carconfig209 = values[i];
                break;
            case 210:
                notification.carconfig210 = values[i];
                break;
            case 211:
                notification.carconfig211 = values[i];
                break;
            case 212:
                notification.carconfig212 = values[i];
                break;
            case 213:
                notification.carconfig213 = values[i];
                break;
            case 214:
                notification.carconfig214 = values[i];
                break;
            case 215:
                notification.carconfig215 = values[i];
                break;
            case 216:
                notification.carconfig216 = values[i];
                break;
            case 217:
                notification.carconfig217 = values[i];
                break;
            case 218:
                notification.carconfig218 = values[i];
                break;
            case 219:
                notification.carconfig219 = values[i];
                break;
            case 220:
                notification.carconfig220 = values[i];
                break;
            case 221:
                notification.carconfig221 = values[i];
                break;
            case 222:
                notification.carconfig222 = values[i];
                break;
            case 223:
                notification.carconfig223 = values[i];
                break;
            case 224:
                notification.carconfig224 = values[i];
                break;
            case 225:
                notification.carconfig225 = values[i];
                break;
            case 226:
                notification.carconfig226 = values[i];
                break;
            case 227:
                notification.carconfig227 = values[i];
                break;
            case 228:
                notification.carconfig228 = values[i];
                break;
            case 229:
                notification.carconfig229 = values[i];
                break;
            case 230:
                notification.carconfig230 = values[i];
                break;
            case 231:
                notification.carconfig231 = values[i];
                break;
            case 232:
                notification.carconfig232 = values[i];
                break;
            case 233:
                notification.carconfig233 = values[i];
                break;
            case 234:
                notification.carconfig234 = values[i];
                break;
            case 235:
                notification.carconfig235 = values[i];
                break;
            case 236:
                notification.carconfig236 = values[i];
                break;
            case 237:
                notification.carconfig237 = values[i];
                break;
            case 238:
                notification.carconfig238 = values[i];
                break;
            case 239:
                notification.carconfig239 = values[i];
                break;
            case 240:
                notification.carconfig240 = values[i];
                break;
            case 241:
                notification.carconfig241 = values[i];
                break;
            case 242:
                notification.carconfig242 = values[i];
                break;
            case 243:
                notification.carconfig243 = values[i];
                break;
            case 244:
                notification.carconfig244 = values[i];
                break;
            case 245:
                notification.carconfig245 = values[i];
                break;
            case 246:
                notification.carconfig246 = values[i];
                break;
            case 247:
                notification.carconfig247 = values[i];
                break;
            case 248:
                notification.carconfig248 = values[i];
                break;
            case 249:
                notification.carconfig249 = values[i];
                break;
            case 250:
                notification.carconfig250 = values[i];
                break;
            case 251:
                notification.carconfig251 = values[i];
                break;
            case 252:
                notification.carconfig252 = values[i];
                break;
            case 253:
                notification.carconfig253 = values[i];
                break;
            case 254:
                notification.carconfig254 = values[i];
                break;
            case 255:
                notification.carconfig255 = values[i];
                break;
            case 256:
                notification.carconfig256 = values[i];
                break;
            case 257:
                notification.carconfig257 = values[i];
                break;
            case 258:
                notification.carconfig258 = values[i];
                break;
            case 259:
                notification.carconfig259 = values[i];
                break;
            case 260:
                notification.carconfig260 = values[i];
                break;
            case 261:
                notification.carconfig261 = values[i];
                break;
            case 262:
                notification.carconfig262 = values[i];
                break;
            case 263:
                notification.carconfig263 = values[i];
                break;
            case 264:
                notification.carconfig264 = values[i];
                break;
            case 265:
                notification.carconfig265 = values[i];
                break;
            case 266:
                notification.carconfig266 = values[i];
                break;
            case 267:
                notification.carconfig267 = values[i];
                break;
            case 268:
                notification.carconfig268 = values[i];
                break;
            case 269:
                notification.carconfig269 = values[i];
                break;
            case 270:
                notification.carconfig270 = values[i];
                break;
            case 271:
                notification.carconfig271 = values[i];
                break;
            case 272:
                notification.carconfig272 = values[i];
                break;
            case 273:
                notification.carconfig273 = values[i];
                break;
            case 274:
                notification.carconfig274 = values[i];
                break;
            case 275:
                notification.carconfig275 = values[i];
                break;
            case 276:
                notification.carconfig276 = values[i];
                break;
            case 277:
                notification.carconfig277 = values[i];
                break;
            case 278:
                notification.carconfig278 = values[i];
                break;
            case 279:
                notification.carconfig279 = values[i];
                break;
            case 280:
                notification.carconfig280 = values[i];
                break;
            case 281:
                notification.carconfig281 = values[i];
                break;
            case 282:
                notification.carconfig282 = values[i];
                break;
            case 283:
                notification.carconfig283 = values[i];
                break;
            case 284:
                notification.carconfig284 = values[i];
                break;
            case 285:
                notification.carconfig285 = values[i];
                break;
            case 286:
                notification.carconfig286 = values[i];
                break;
            case 287:
                notification.carconfig287 = values[i];
                break;
            case 288:
                notification.carconfig288 = values[i];
                break;
            case 289:
                notification.carconfig289 = values[i];
                break;
            case 290:
                notification.carconfig290 = values[i];
                break;
            case 291:
                notification.carconfig291 = values[i];
                break;
            case 292:
                notification.carconfig292 = values[i];
                break;
            case 293:
                notification.carconfig293 = values[i];
                break;
            case 294:
                notification.carconfig294 = values[i];
                break;
            case 295:
                notification.carconfig295 = values[i];
                break;
            case 296:
                notification.carconfig296 = values[i];
                break;
            case 297:
                notification.carconfig297 = values[i];
                break;
            case 298:
                notification.carconfig298 = values[i];
                break;
            case 299:
                notification.carconfig299 = values[i];
                break;
            case 300:
                notification.carconfig300 = values[i];
                break;
            case 301:
                notification.carconfig301 = values[i];
                break;
            case 302:
                notification.carconfig302 = values[i];
                break;
            case 303:
                notification.carconfig303 = values[i];
                break;
            case 304:
                notification.carconfig304 = values[i];
                break;
            case 305:
                notification.carconfig305 = values[i];
                break;
            case 306:
                notification.carconfig306 = values[i];
                break;
            case 307:
                notification.carconfig307 = values[i];
                break;
            case 308:
                notification.carconfig308 = values[i];
                break;
            case 309:
                notification.carconfig309 = values[i];
                break;
            case 310:
                notification.carconfig310 = values[i];
                break;
            case 311:
                notification.carconfig311 = values[i];
                break;
            case 312:
                notification.carconfig312 = values[i];
                break;
            case 313:
                notification.carconfig313 = values[i];
                break;
            case 314:
                notification.carconfig314 = values[i];
                break;
            case 315:
                notification.carconfig315 = values[i];
                break;
            case 316:
                notification.carconfig316 = values[i];
                break;
            case 317:
                notification.carconfig317 = values[i];
                break;
            case 318:
                notification.carconfig318 = values[i];
                break;
            case 319:
                notification.carconfig319 = values[i];
                break;
            case 320:
                notification.carconfig320 = values[i];
                break;
            case 321:
                notification.carconfig321 = values[i];
                break;
            case 322:
                notification.carconfig322 = values[i];
                break;
            case 323:
                notification.carconfig323 = values[i];
                break;
            case 324:
                notification.carconfig324 = values[i];
                break;
            case 325:
                notification.carconfig325 = values[i];
                break;
            case 326:
                notification.carconfig326 = values[i];
                break;
            case 327:
                notification.carconfig327 = values[i];
                break;
            case 328:
                notification.carconfig328 = values[i];
                break;
            case 329:
                notification.carconfig329 = values[i];
                break;
            case 330:
                notification.carconfig330 = values[i];
                break;
            case 331:
                notification.carconfig331 = values[i];
                break;
            case 332:
                notification.carconfig332 = values[i];
                break;
            case 333:
                notification.carconfig333 = values[i];
                break;
            case 334:
                notification.carconfig334 = values[i];
                break;
            case 335:
                notification.carconfig335 = values[i];
                break;
            case 336:
                notification.carconfig336 = values[i];
                break;
            case 337:
                notification.carconfig337 = values[i];
                break;
            case 338:
                notification.carconfig338 = values[i];
                break;
            case 339:
                notification.carconfig339 = values[i];
                break;
            case 340:
                notification.carconfig340 = values[i];
                break;
            case 341:
                notification.carconfig341 = values[i];
                break;
            case 342:
                notification.carconfig342 = values[i];
                break;
            case 343:
                notification.carconfig343 = values[i];
                break;
            case 344:
                notification.carconfig344 = values[i];
                break;
            case 345:
                notification.carconfig345 = values[i];
                break;
            case 346:
                notification.carconfig346 = values[i];
                break;
            case 347:
                notification.carconfig347 = values[i];
                break;
            case 348:
                notification.carconfig348 = values[i];
                break;
            case 349:
                notification.carconfig349 = values[i];
                break;
            case 350:
                notification.carconfig350 = values[i];
                break;
            case 351:
                notification.carconfig351 = values[i];
                break;
            case 352:
                notification.carconfig352 = values[i];
                break;
            case 353:
                notification.carconfig353 = values[i];
                break;
            case 354:
                notification.carconfig354 = values[i];
                break;
            case 355:
                notification.carconfig355 = values[i];
                break;
            case 356:
                notification.carconfig356 = values[i];
                break;
            case 357:
                notification.carconfig357 = values[i];
                break;
            case 358:
                notification.carconfig358 = values[i];
                break;
            case 359:
                notification.carconfig359 = values[i];
                break;
            case 360:
                notification.carconfig360 = values[i];
                break;
            case 361:
                notification.carconfig361 = values[i];
                break;
            case 362:
                notification.carconfig362 = values[i];
                break;
            case 363:
                notification.carconfig363 = values[i];
                break;
            case 364:
                notification.carconfig364 = values[i];
                break;
            case 365:
                notification.carconfig365 = values[i];
                break;
            case 366:
                notification.carconfig366 = values[i];
                break;
            case 367:
                notification.carconfig367 = values[i];
                break;
            case 368:
                notification.carconfig368 = values[i];
                break;
            case 369:
                notification.carconfig369 = values[i];
                break;
            case 370:
                notification.carconfig370 = values[i];
                break;
            case 371:
                notification.carconfig371 = values[i];
                break;
            case 372:
                notification.carconfig372 = values[i];
                break;
            case 373:
                notification.carconfig373 = values[i];
                break;
            case 374:
                notification.carconfig374 = values[i];
                break;
            case 375:
                notification.carconfig375 = values[i];
                break;
            case 376:
                notification.carconfig376 = values[i];
                break;
            case 377:
                notification.carconfig377 = values[i];
                break;
            case 378:
                notification.carconfig378 = values[i];
                break;
            case 379:
                notification.carconfig379 = values[i];
                break;
            case 380:
                notification.carconfig380 = values[i];
                break;
            case 381:
                notification.carconfig381 = values[i];
                break;
            case 382:
                notification.carconfig382 = values[i];
                break;
            case 383:
                notification.carconfig383 = values[i];
                break;
            case 384:
                notification.carconfig384 = values[i];
                break;
            case 385:
                notification.carconfig385 = values[i];
                break;
            case 386:
                notification.carconfig386 = values[i];
                break;
            case 387:
                notification.carconfig387 = values[i];
                break;
            case 388:
                notification.carconfig388 = values[i];
                break;
            case 389:
                notification.carconfig389 = values[i];
                break;
            case 390:
                notification.carconfig390 = values[i];
                break;
            case 391:
                notification.carconfig391 = values[i];
                break;
            case 392:
                notification.carconfig392 = values[i];
                break;
            case 393:
                notification.carconfig393 = values[i];
                break;
            case 394:
                notification.carconfig394 = values[i];
                break;
            case 395:
                notification.carconfig395 = values[i];
                break;
            case 396:
                notification.carconfig396 = values[i];
                break;
            case 397:
                notification.carconfig397 = values[i];
                break;
            case 398:
                notification.carconfig398 = values[i];
                break;
            case 399:
                notification.carconfig399 = values[i];
                break;
            case 400:
                notification.carconfig400 = values[i];
                break;
            case 401:
                notification.carconfig401 = values[i];
                break;
            case 402:
                notification.carconfig402 = values[i];
                break;
            case 403:
                notification.carconfig403 = values[i];
                break;
            case 404:
                notification.carconfig404 = values[i];
                break;
            case 405:
                notification.carconfig405 = values[i];
                break;
            case 406:
                notification.carconfig406 = values[i];
                break;
            case 407:
                notification.carconfig407 = values[i];
                break;
            case 408:
                notification.carconfig408 = values[i];
                break;
            case 409:
                notification.carconfig409 = values[i];
                break;
            case 410:
                notification.carconfig410 = values[i];
                break;
            case 411:
                notification.carconfig411 = values[i];
                break;
            case 412:
                notification.carconfig412 = values[i];
                break;
            case 413:
                notification.carconfig413 = values[i];
                break;
            case 414:
                notification.carconfig414 = values[i];
                break;
            case 415:
                notification.carconfig415 = values[i];
                break;
            case 416:
                notification.carconfig416 = values[i];
                break;
            case 417:
                notification.carconfig417 = values[i];
                break;
            case 418:
                notification.carconfig418 = values[i];
                break;
            case 419:
                notification.carconfig419 = values[i];
                break;
            case 420:
                notification.carconfig420 = values[i];
                break;
            case 421:
                notification.carconfig421 = values[i];
                break;
            case 422:
                notification.carconfig422 = values[i];
                break;
            case 423:
                notification.carconfig423 = values[i];
                break;
            case 424:
                notification.carconfig424 = values[i];
                break;
            case 425:
                notification.carconfig425 = values[i];
                break;
            case 426:
                notification.carconfig426 = values[i];
                break;
            case 427:
                notification.carconfig427 = values[i];
                break;
            case 428:
                notification.carconfig428 = values[i];
                break;
            case 429:
                notification.carconfig429 = values[i];
                break;
            case 430:
                notification.carconfig430 = values[i];
                break;
            case 431:
                notification.carconfig431 = values[i];
                break;
            case 432:
                notification.carconfig432 = values[i];
                break;
            case 433:
                notification.carconfig433 = values[i];
                break;
            case 434:
                notification.carconfig434 = values[i];
                break;
            case 435:
                notification.carconfig435 = values[i];
                break;
            case 436:
                notification.carconfig436 = values[i];
                break;
            case 437:
                notification.carconfig437 = values[i];
                break;
            case 438:
                notification.carconfig438 = values[i];
                break;
            case 439:
                notification.carconfig439 = values[i];
                break;
            case 440:
                notification.carconfig440 = values[i];
                break;
            case 441:
                notification.carconfig441 = values[i];
                break;
            case 442:
                notification.carconfig442 = values[i];
                break;
            case 443:
                notification.carconfig443 = values[i];
                break;
            case 444:
                notification.carconfig444 = values[i];
                break;
            case 445:
                notification.carconfig445 = values[i];
                break;
            case 446:
                notification.carconfig446 = values[i];
                break;
            case 447:
                notification.carconfig447 = values[i];
                break;
            case 448:
                notification.carconfig448 = values[i];
                break;
            case 449:
                notification.carconfig449 = values[i];
                break;
            case 450:
                notification.carconfig450 = values[i];
                break;
            case 451:
                notification.carconfig451 = values[i];
                break;
            case 452:
                notification.carconfig452 = values[i];
                break;
            case 453:
                notification.carconfig453 = values[i];
                break;
            case 454:
                notification.carconfig454 = values[i];
                break;
            case 455:
                notification.carconfig455 = values[i];
                break;
            case 456:
                notification.carconfig456 = values[i];
                break;
            case 457:
                notification.carconfig457 = values[i];
                break;
            case 458:
                notification.carconfig458 = values[i];
                break;
            case 459:
                notification.carconfig459 = values[i];
                break;
            case 460:
                notification.carconfig460 = values[i];
                break;
            case 461:
                notification.carconfig461 = values[i];
                break;
            case 462:
                notification.carconfig462 = values[i];
                break;
            case 463:
                notification.carconfig463 = values[i];
                break;
            case 464:
                notification.carconfig464 = values[i];
                break;
            case 465:
                notification.carconfig465 = values[i];
                break;
            case 466:
                notification.carconfig466 = values[i];
                break;
            case 467:
                notification.carconfig467 = values[i];
                break;
            case 468:
                notification.carconfig468 = values[i];
                break;
            case 469:
                notification.carconfig469 = values[i];
                break;
            case 470:
                notification.carconfig470 = values[i];
                break;
            case 471:
                notification.carconfig471 = values[i];
                break;
            case 472:
                notification.carconfig472 = values[i];
                break;
            case 473:
                notification.carconfig473 = values[i];
                break;
            case 474:
                notification.carconfig474 = values[i];
                break;
            case 475:
                notification.carconfig475 = values[i];
                break;
            case 476:
                notification.carconfig476 = values[i];
                break;
            case 477:
                notification.carconfig477 = values[i];
                break;
            case 478:
                notification.carconfig478 = values[i];
                break;
            case 479:
                notification.carconfig479 = values[i];
                break;
            case 480:
                notification.carconfig480 = values[i];
                break;
            case 481:
                notification.carconfig481 = values[i];
                break;
            case 482:
                notification.carconfig482 = values[i];
                break;
            case 483:
                notification.carconfig483 = values[i];
                break;
            case 484:
                notification.carconfig484 = values[i];
                break;
            case 485:
                notification.carconfig485 = values[i];
                break;
            case 486:
                notification.carconfig486 = values[i];
                break;
            case 487:
                notification.carconfig487 = values[i];
                break;
            case 488:
                notification.carconfig488 = values[i];
                break;
            case 489:
                notification.carconfig489 = values[i];
                break;
            case 490:
                notification.carconfig490 = values[i];
                break;
            case 491:
                notification.carconfig491 = values[i];
                break;
            case 492:
                notification.carconfig492 = values[i];
                break;
            case 493:
                notification.carconfig493 = values[i];
                break;
            case 494:
                notification.carconfig494 = values[i];
                break;
            case 495:
                notification.carconfig495 = values[i];
                break;
            case 496:
                notification.carconfig496 = values[i];
                break;
            case 497:
                notification.carconfig497 = values[i];
                break;
            case 498:
                notification.carconfig498 = values[i];
                break;
            case 499:
                notification.carconfig499 = values[i];
                break;
            case 500:
                notification.carconfig500 = values[i];
                break;
            case 501:
                notification.carconfig501 = values[i];
                break;
            case 502:
                notification.carconfig502 = values[i];
                break;
            case 503:
                notification.carconfig503 = values[i];
                break;
            case 504:
                notification.carconfig504 = values[i];
                break;
            case 505:
                notification.carconfig505 = values[i];
                break;
            case 506:
                notification.carconfig506 = values[i];
                break;
            case 507:
                notification.carconfig507 = values[i];
                break;
            case 508:
                notification.carconfig508 = values[i];
                break;
            case 509:
                notification.carconfig509 = values[i];
                break;
            case 510:
                notification.carconfig510 = values[i];
                break;
            case 511:
                notification.carconfig511 = values[i];
                break;
            case 512:
                notification.carconfig512 = values[i];
                break;
            case 513:
                notification.carconfig513 = values[i];
                break;
            case 514:
                notification.carconfig514 = values[i];
                break;
            case 515:
                notification.carconfig515 = values[i];
                break;
            case 516:
                notification.carconfig516 = values[i];
                break;
            case 517:
                notification.carconfig517 = values[i];
                break;
            case 518:
                notification.carconfig518 = values[i];
                break;
            case 519:
                notification.carconfig519 = values[i];
                break;
            case 520:
                notification.carconfig520 = values[i];
                break;
            case 521:
                notification.carconfig521 = values[i];
                break;
            case 522:
                notification.carconfig522 = values[i];
                break;
            case 523:
                notification.carconfig523 = values[i];
                break;
            case 524:
                notification.carconfig524 = values[i];
                break;
            case 525:
                notification.carconfig525 = values[i];
                break;
            case 526:
                notification.carconfig526 = values[i];
                break;
            case 527:
                notification.carconfig527 = values[i];
                break;
            case 528:
                notification.carconfig528 = values[i];
                break;
            case 529:
                notification.carconfig529 = values[i];
                break;
            case 530:
                notification.carconfig530 = values[i];
                break;
            case 531:
                notification.carconfig531 = values[i];
                break;
            case 532:
                notification.carconfig532 = values[i];
                break;
            case 533:
                notification.carconfig533 = values[i];
                break;
            case 534:
                notification.carconfig534 = values[i];
                break;
            case 535:
                notification.carconfig535 = values[i];
                break;
            case 536:
                notification.carconfig536 = values[i];
                break;
            case 537:
                notification.carconfig537 = values[i];
                break;
            case 538:
                notification.carconfig538 = values[i];
                break;
            case 539:
                notification.carconfig539 = values[i];
                break;
            case 540:
                notification.carconfig540 = values[i];
                break;
            case 541:
                notification.carconfig541 = values[i];
                break;
            case 542:
                notification.carconfig542 = values[i];
                break;
            case 543:
                notification.carconfig543 = values[i];
                break;
            case 544:
                notification.carconfig544 = values[i];
                break;
            case 545:
                notification.carconfig545 = values[i];
                break;
            case 546:
                notification.carconfig546 = values[i];
                break;
            case 547:
                notification.carconfig547 = values[i];
                break;
            case 548:
                notification.carconfig548 = values[i];
                break;
            case 549:
                notification.carconfig549 = values[i];
                break;
            case 550:
                notification.carconfig550 = values[i];
                break;
            case 551:
                notification.carconfig551 = values[i];
                break;
            case 552:
                notification.carconfig552 = values[i];
                break;
            case 553:
                notification.carconfig553 = values[i];
                break;
            case 554:
                notification.carconfig554 = values[i];
                break;
            case 555:
                notification.carconfig555 = values[i];
                break;
            case 556:
                notification.carconfig556 = values[i];
                break;
            case 557:
                notification.carconfig557 = values[i];
                break;
            case 558:
                notification.carconfig558 = values[i];
                break;
            case 559:
                notification.carconfig559 = values[i];
                break;
            case 560:
                notification.carconfig560 = values[i];
                break;
            case 561:
                notification.carconfig561 = values[i];
                break;
            case 562:
                notification.carconfig562 = values[i];
                break;
            case 563:
                notification.carconfig563 = values[i];
                break;
            case 564:
                notification.carconfig564 = values[i];
                break;
            case 565:
                notification.carconfig565 = values[i];
                break;
            case 566:
                notification.carconfig566 = values[i];
                break;
            case 567:
                notification.carconfig567 = values[i];
                break;
            case 568:
                notification.carconfig568 = values[i];
                break;
            case 569:
                notification.carconfig569 = values[i];
                break;
            case 570:
                notification.carconfig570 = values[i];
                break;
            case 571:
                notification.carconfig571 = values[i];
                break;
            case 572:
                notification.carconfig572 = values[i];
                break;
            case 573:
                notification.carconfig573 = values[i];
                break;
            case 574:
                notification.carconfig574 = values[i];
                break;
            case 575:
                notification.carconfig575 = values[i];
                break;
            case 576:
                notification.carconfig576 = values[i];
                break;
            case 577:
                notification.carconfig577 = values[i];
                break;
            case 578:
                notification.carconfig578 = values[i];
                break;
            case 579:
                notification.carconfig579 = values[i];
                break;
            case 580:
                notification.carconfig580 = values[i];
                break;
            case 581:
                notification.carconfig581 = values[i];
                break;
            case 582:
                notification.carconfig582 = values[i];
                break;
            case 583:
                notification.carconfig583 = values[i];
                break;
            case 584:
                notification.carconfig584 = values[i];
                break;
            case 585:
                notification.carconfig585 = values[i];
                break;
            case 586:
                notification.carconfig586 = values[i];
                break;
            case 587:
                notification.carconfig587 = values[i];
                break;
            case 588:
                notification.carconfig588 = values[i];
                break;
            case 589:
                notification.carconfig589 = values[i];
                break;
            case 590:
                notification.carconfig590 = values[i];
                break;
            case 591:
                notification.carconfig591 = values[i];
                break;
            case 592:
                notification.carconfig592 = values[i];
                break;
            case 593:
                notification.carconfig593 = values[i];
                break;
            case 594:
                notification.carconfig594 = values[i];
                break;
            case 595:
                notification.carconfig595 = values[i];
                break;
            case 596:
                notification.carconfig596 = values[i];
                break;
            case 597:
                notification.carconfig597 = values[i];
                break;
            case 598:
                notification.carconfig598 = values[i];
                break;
            case 599:
                notification.carconfig599 = values[i];
                break;
            case 600:
                notification.carconfig600 = values[i];
                break;
            case 601:
                notification.carconfig601 = values[i];
                break;
            case 602:
                notification.carconfig602 = values[i];
                break;
            case 603:
                notification.carconfig603 = values[i];
                break;
            case 604:
                notification.carconfig604 = values[i];
                break;
            case 605:
                notification.carconfig605 = values[i];
                break;
            case 606:
                notification.carconfig606 = values[i];
                break;
            case 607:
                notification.carconfig607 = values[i];
                break;
            case 608:
                notification.carconfig608 = values[i];
                break;
            case 609:
                notification.carconfig609 = values[i];
                break;
            case 610:
                notification.carconfig610 = values[i];
                break;
            case 611:
                notification.carconfig611 = values[i];
                break;
            case 612:
                notification.carconfig612 = values[i];
                break;
            case 613:
                notification.carconfig613 = values[i];
                break;
            case 614:
                notification.carconfig614 = values[i];
                break;
            case 615:
                notification.carconfig615 = values[i];
                break;
            case 616:
                notification.carconfig616 = values[i];
                break;
            case 617:
                notification.carconfig617 = values[i];
                break;
            case 618:
                notification.carconfig618 = values[i];
                break;
            case 619:
                notification.carconfig619 = values[i];
                break;
            case 620:
                notification.carconfig620 = values[i];
                break;
            case 621:
                notification.carconfig621 = values[i];
                break;
            case 622:
                notification.carconfig622 = values[i];
                break;
            case 623:
                notification.carconfig623 = values[i];
                break;
            case 624:
                notification.carconfig624 = values[i];
                break;
            case 625:
                notification.carconfig625 = values[i];
                break;
            case 626:
                notification.carconfig626 = values[i];
                break;
            case 627:
                notification.carconfig627 = values[i];
                break;
            case 628:
                notification.carconfig628 = values[i];
                break;
            case 629:
                notification.carconfig629 = values[i];
                break;
            case 630:
                notification.carconfig630 = values[i];
                break;
            case 631:
                notification.carconfig631 = values[i];
                break;
            case 632:
                notification.carconfig632 = values[i];
                break;
            case 633:
                notification.carconfig633 = values[i];
                break;
            case 634:
                notification.carconfig634 = values[i];
                break;
            case 635:
                notification.carconfig635 = values[i];
                break;
            case 636:
                notification.carconfig636 = values[i];
                break;
            case 637:
                notification.carconfig637 = values[i];
                break;
            case 638:
                notification.carconfig638 = values[i];
                break;
            case 639:
                notification.carconfig639 = values[i];
                break;
            case 640:
                notification.carconfig640 = values[i];
                break;
            case 641:
                notification.carconfig641 = values[i];
                break;
            case 642:
                notification.carconfig642 = values[i];
                break;
            case 643:
                notification.carconfig643 = values[i];
                break;
            case 644:
                notification.carconfig644 = values[i];
                break;
            case 645:
                notification.carconfig645 = values[i];
                break;
            case 646:
                notification.carconfig646 = values[i];
                break;
            case 647:
                notification.carconfig647 = values[i];
                break;
            case 648:
                notification.carconfig648 = values[i];
                break;
            case 649:
                notification.carconfig649 = values[i];
                break;
            case 650:
                notification.carconfig650 = values[i];
                break;
            case 651:
                notification.carconfig651 = values[i];
                break;
            case 652:
                notification.carconfig652 = values[i];
                break;
            case 653:
                notification.carconfig653 = values[i];
                break;
            case 654:
                notification.carconfig654 = values[i];
                break;
            case 655:
                notification.carconfig655 = values[i];
                break;
            case 656:
                notification.carconfig656 = values[i];
                break;
            case 657:
                notification.carconfig657 = values[i];
                break;
            case 658:
                notification.carconfig658 = values[i];
                break;
            case 659:
                notification.carconfig659 = values[i];
                break;
            case 660:
                notification.carconfig660 = values[i];
                break;
            case 661:
                notification.carconfig661 = values[i];
                break;
            case 662:
                notification.carconfig662 = values[i];
                break;
            case 663:
                notification.carconfig663 = values[i];
                break;
            case 664:
                notification.carconfig664 = values[i];
                break;
            case 665:
                notification.carconfig665 = values[i];
                break;
            case 666:
                notification.carconfig666 = values[i];
                break;
            case 667:
                notification.carconfig667 = values[i];
                break;
            case 668:
                notification.carconfig668 = values[i];
                break;
            case 669:
                notification.carconfig669 = values[i];
                break;
            case 670:
                notification.carconfig670 = values[i];
                break;
            case 671:
                notification.carconfig671 = values[i];
                break;
            case 672:
                notification.carconfig672 = values[i];
                break;
            case 673:
                notification.carconfig673 = values[i];
                break;
            case 674:
                notification.carconfig674 = values[i];
                break;
            case 675:
                notification.carconfig675 = values[i];
                break;
            case 676:
                notification.carconfig676 = values[i];
                break;
            case 677:
                notification.carconfig677 = values[i];
                break;
            case 678:
                notification.carconfig678 = values[i];
                break;
            case 679:
                notification.carconfig679 = values[i];
                break;
            case 680:
                notification.carconfig680 = values[i];
                break;
            case 681:
                notification.carconfig681 = values[i];
                break;
            case 682:
                notification.carconfig682 = values[i];
                break;
            case 683:
                notification.carconfig683 = values[i];
                break;
            case 684:
                notification.carconfig684 = values[i];
                break;
            case 685:
                notification.carconfig685 = values[i];
                break;
            case 686:
                notification.carconfig686 = values[i];
                break;
            case 687:
                notification.carconfig687 = values[i];
                break;
            case 688:
                notification.carconfig688 = values[i];
                break;
            case 689:
                notification.carconfig689 = values[i];
                break;
            case 690:
                notification.carconfig690 = values[i];
                break;
            case 691:
                notification.carconfig691 = values[i];
                break;
            case 692:
                notification.carconfig692 = values[i];
                break;
            case 693:
                notification.carconfig693 = values[i];
                break;
            case 694:
                notification.carconfig694 = values[i];
                break;
            case 695:
                notification.carconfig695 = values[i];
                break;
            case 696:
                notification.carconfig696 = values[i];
                break;
            case 697:
                notification.carconfig697 = values[i];
                break;
            case 698:
                notification.carconfig698 = values[i];
                break;
            case 699:
                notification.carconfig699 = values[i];
                break;
            case 700:
                notification.carconfig700 = values[i];
                break;
            case 701:
                notification.carconfig701 = values[i];
                break;
            case 702:
                notification.carconfig702 = values[i];
                break;
            case 703:
                notification.carconfig703 = values[i];
                break;
            case 704:
                notification.carconfig704 = values[i];
                break;
            case 705:
                notification.carconfig705 = values[i];
                break;
            case 706:
                notification.carconfig706 = values[i];
                break;
            case 707:
                notification.carconfig707 = values[i];
                break;
            case 708:
                notification.carconfig708 = values[i];
                break;
            case 709:
                notification.carconfig709 = values[i];
                break;
            case 710:
                notification.carconfig710 = values[i];
                break;
            case 711:
                notification.carconfig711 = values[i];
                break;
            case 712:
                notification.carconfig712 = values[i];
                break;
            case 713:
                notification.carconfig713 = values[i];
                break;
            case 714:
                notification.carconfig714 = values[i];
                break;
            case 715:
                notification.carconfig715 = values[i];
                break;
            case 716:
                notification.carconfig716 = values[i];
                break;
            case 717:
                notification.carconfig717 = values[i];
                break;
            case 718:
                notification.carconfig718 = values[i];
                break;
            case 719:
                notification.carconfig719 = values[i];
                break;
            case 720:
                notification.carconfig720 = values[i];
                break;
            case 721:
                notification.carconfig721 = values[i];
                break;
            case 722:
                notification.carconfig722 = values[i];
                break;
            case 723:
                notification.carconfig723 = values[i];
                break;
            case 724:
                notification.carconfig724 = values[i];
                break;
            case 725:
                notification.carconfig725 = values[i];
                break;
            case 726:
                notification.carconfig726 = values[i];
                break;
            case 727:
                notification.carconfig727 = values[i];
                break;
            case 728:
                notification.carconfig728 = values[i];
                break;
            case 729:
                notification.carconfig729 = values[i];
                break;
            case 730:
                notification.carconfig730 = values[i];
                break;
            case 731:
                notification.carconfig731 = values[i];
                break;
            case 732:
                notification.carconfig732 = values[i];
                break;
            case 733:
                notification.carconfig733 = values[i];
                break;
            case 734:
                notification.carconfig734 = values[i];
                break;
            case 735:
                notification.carconfig735 = values[i];
                break;
            case 736:
                notification.carconfig736 = values[i];
                break;
            case 737:
                notification.carconfig737 = values[i];
                break;
            case 738:
                notification.carconfig738 = values[i];
                break;
            case 739:
                notification.carconfig739 = values[i];
                break;
            case 740:
                notification.carconfig740 = values[i];
                break;
            case 741:
                notification.carconfig741 = values[i];
                break;
            case 742:
                notification.carconfig742 = values[i];
                break;
            case 743:
                notification.carconfig743 = values[i];
                break;
            case 744:
                notification.carconfig744 = values[i];
                break;
            case 745:
                notification.carconfig745 = values[i];
                break;
            case 746:
                notification.carconfig746 = values[i];
                break;
            case 747:
                notification.carconfig747 = values[i];
                break;
            case 748:
                notification.carconfig748 = values[i];
                break;
            case 749:
                notification.carconfig749 = values[i];
                break;
            case 750:
                notification.carconfig750 = values[i];
                break;
            case 751:
                notification.carconfig751 = values[i];
                break;
            case 752:
                notification.carconfig752 = values[i];
                break;
            case 753:
                notification.carconfig753 = values[i];
                break;
            case 754:
                notification.carconfig754 = values[i];
                break;
            case 755:
                notification.carconfig755 = values[i];
                break;
            case 756:
                notification.carconfig756 = values[i];
                break;
            case 757:
                notification.carconfig757 = values[i];
                break;
            case 758:
                notification.carconfig758 = values[i];
                break;
            case 759:
                notification.carconfig759 = values[i];
                break;
            case 760:
                notification.carconfig760 = values[i];
                break;
            case 761:
                notification.carconfig761 = values[i];
                break;
            case 762:
                notification.carconfig762 = values[i];
                break;
            case 763:
                notification.carconfig763 = values[i];
                break;
            case 764:
                notification.carconfig764 = values[i];
                break;
            case 765:
                notification.carconfig765 = values[i];
                break;
            case 766:
                notification.carconfig766 = values[i];
                break;
            case 767:
                notification.carconfig767 = values[i];
                break;
            case 768:
                notification.carconfig768 = values[i];
                break;
            case 769:
                notification.carconfig769 = values[i];
                break;
            case 770:
                notification.carconfig770 = values[i];
                break;
            case 771:
                notification.carconfig771 = values[i];
                break;
            case 772:
                notification.carconfig772 = values[i];
                break;
            case 773:
                notification.carconfig773 = values[i];
                break;
            case 774:
                notification.carconfig774 = values[i];
                break;
            case 775:
                notification.carconfig775 = values[i];
                break;
            case 776:
                notification.carconfig776 = values[i];
                break;
            case 777:
                notification.carconfig777 = values[i];
                break;
            case 778:
                notification.carconfig778 = values[i];
                break;
            case 779:
                notification.carconfig779 = values[i];
                break;
            case 780:
                notification.carconfig780 = values[i];
                break;
            case 781:
                notification.carconfig781 = values[i];
                break;
            case 782:
                notification.carconfig782 = values[i];
                break;
            case 783:
                notification.carconfig783 = values[i];
                break;
            case 784:
                notification.carconfig784 = values[i];
                break;
            case 785:
                notification.carconfig785 = values[i];
                break;
            case 786:
                notification.carconfig786 = values[i];
                break;
            case 787:
                notification.carconfig787 = values[i];
                break;
            case 788:
                notification.carconfig788 = values[i];
                break;
            case 789:
                notification.carconfig789 = values[i];
                break;
            case 790:
                notification.carconfig790 = values[i];
                break;
            case 791:
                notification.carconfig791 = values[i];
                break;
            case 792:
                notification.carconfig792 = values[i];
                break;
            case 793:
                notification.carconfig793 = values[i];
                break;
            case 794:
                notification.carconfig794 = values[i];
                break;
            case 795:
                notification.carconfig795 = values[i];
                break;
            case 796:
                notification.carconfig796 = values[i];
                break;
            case 797:
                notification.carconfig797 = values[i];
                break;
            case 798:
                notification.carconfig798 = values[i];
                break;
            case 799:
                notification.carconfig799 = values[i];
                break;
            case 800:
                notification.carconfig800 = values[i];
                break;
            case 801:
                notification.carconfig801 = values[i];
                break;
            case 802:
                notification.carconfig802 = values[i];
                break;
            case 803:
                notification.carconfig803 = values[i];
                break;
            case 804:
                notification.carconfig804 = values[i];
                break;
            case 805:
                notification.carconfig805 = values[i];
                break;
            case 806:
                notification.carconfig806 = values[i];
                break;
            case 807:
                notification.carconfig807 = values[i];
                break;
            case 808:
                notification.carconfig808 = values[i];
                break;
            case 809:
                notification.carconfig809 = values[i];
                break;
            case 810:
                notification.carconfig810 = values[i];
                break;
            case 811:
                notification.carconfig811 = values[i];
                break;
            case 812:
                notification.carconfig812 = values[i];
                break;
            case 813:
                notification.carconfig813 = values[i];
                break;
            case 814:
                notification.carconfig814 = values[i];
                break;
            case 815:
                notification.carconfig815 = values[i];
                break;
            case 816:
                notification.carconfig816 = values[i];
                break;
            case 817:
                notification.carconfig817 = values[i];
                break;
            case 818:
                notification.carconfig818 = values[i];
                break;
            case 819:
                notification.carconfig819 = values[i];
                break;
            case 820:
                notification.carconfig820 = values[i];
                break;
            case 821:
                notification.carconfig821 = values[i];
                break;
            case 822:
                notification.carconfig822 = values[i];
                break;
            case 823:
                notification.carconfig823 = values[i];
                break;
            case 824:
                notification.carconfig824 = values[i];
                break;
            case 825:
                notification.carconfig825 = values[i];
                break;
            case 826:
                notification.carconfig826 = values[i];
                break;
            case 827:
                notification.carconfig827 = values[i];
                break;
            case 828:
                notification.carconfig828 = values[i];
                break;
            case 829:
                notification.carconfig829 = values[i];
                break;
            case 830:
                notification.carconfig830 = values[i];
                break;
            case 831:
                notification.carconfig831 = values[i];
                break;
            case 832:
                notification.carconfig832 = values[i];
                break;
            case 833:
                notification.carconfig833 = values[i];
                break;
            case 834:
                notification.carconfig834 = values[i];
                break;
            case 835:
                notification.carconfig835 = values[i];
                break;
            case 836:
                notification.carconfig836 = values[i];
                break;
            case 837:
                notification.carconfig837 = values[i];
                break;
            case 838:
                notification.carconfig838 = values[i];
                break;
            case 839:
                notification.carconfig839 = values[i];
                break;
            case 840:
                notification.carconfig840 = values[i];
                break;
            case 841:
                notification.carconfig841 = values[i];
                break;
            case 842:
                notification.carconfig842 = values[i];
                break;
            case 843:
                notification.carconfig843 = values[i];
                break;
            case 844:
                notification.carconfig844 = values[i];
                break;
            case 845:
                notification.carconfig845 = values[i];
                break;
            case 846:
                notification.carconfig846 = values[i];
                break;
            case 847:
                notification.carconfig847 = values[i];
                break;
            case 848:
                notification.carconfig848 = values[i];
                break;
            case 849:
                notification.carconfig849 = values[i];
                break;
            case 850:
                notification.carconfig850 = values[i];
                break;
            case 851:
                notification.carconfig851 = values[i];
                break;
            case 852:
                notification.carconfig852 = values[i];
                break;
            case 853:
                notification.carconfig853 = values[i];
                break;
            case 854:
                notification.carconfig854 = values[i];
                break;
            case 855:
                notification.carconfig855 = values[i];
                break;
            case 856:
                notification.carconfig856 = values[i];
                break;
            case 857:
                notification.carconfig857 = values[i];
                break;
            case 858:
                notification.carconfig858 = values[i];
                break;
            case 859:
                notification.carconfig859 = values[i];
                break;
            case 860:
                notification.carconfig860 = values[i];
                break;
            case 861:
                notification.carconfig861 = values[i];
                break;
            case 862:
                notification.carconfig862 = values[i];
                break;
            case 863:
                notification.carconfig863 = values[i];
                break;
            case 864:
                notification.carconfig864 = values[i];
                break;
            case 865:
                notification.carconfig865 = values[i];
                break;
            case 866:
                notification.carconfig866 = values[i];
                break;
            case 867:
                notification.carconfig867 = values[i];
                break;
            case 868:
                notification.carconfig868 = values[i];
                break;
            case 869:
                notification.carconfig869 = values[i];
                break;
            case 870:
                notification.carconfig870 = values[i];
                break;
            case 871:
                notification.carconfig871 = values[i];
                break;
            case 872:
                notification.carconfig872 = values[i];
                break;
            case 873:
                notification.carconfig873 = values[i];
                break;
            case 874:
                notification.carconfig874 = values[i];
                break;
            case 875:
                notification.carconfig875 = values[i];
                break;
            case 876:
                notification.carconfig876 = values[i];
                break;
            case 877:
                notification.carconfig877 = values[i];
                break;
            case 878:
                notification.carconfig878 = values[i];
                break;
            case 879:
                notification.carconfig879 = values[i];
                break;
            case 880:
                notification.carconfig880 = values[i];
                break;
            case 881:
                notification.carconfig881 = values[i];
                break;
            case 882:
                notification.carconfig882 = values[i];
                break;
            case 883:
                notification.carconfig883 = values[i];
                break;
            case 884:
                notification.carconfig884 = values[i];
                break;
            case 885:
                notification.carconfig885 = values[i];
                break;
            case 886:
                notification.carconfig886 = values[i];
                break;
            case 887:
                notification.carconfig887 = values[i];
                break;
            case 888:
                notification.carconfig888 = values[i];
                break;
            case 889:
                notification.carconfig889 = values[i];
                break;
            case 890:
                notification.carconfig890 = values[i];
                break;
            case 891:
                notification.carconfig891 = values[i];
                break;
            case 892:
                notification.carconfig892 = values[i];
                break;
            case 893:
                notification.carconfig893 = values[i];
                break;
            case 894:
                notification.carconfig894 = values[i];
                break;
            case 895:
                notification.carconfig895 = values[i];
                break;
            case 896:
                notification.carconfig896 = values[i];
                break;
            case 897:
                notification.carconfig897 = values[i];
                break;
            case 898:
                notification.carconfig898 = values[i];
                break;
            case 899:
                notification.carconfig899 = values[i];
                break;
            case 900:
                notification.carconfig900 = values[i];
                break;
            case 901:
                notification.carconfig901 = values[i];
                break;
            case 902:
                notification.carconfig902 = values[i];
                break;
            case 903:
                notification.carconfig903 = values[i];
                break;
            case 904:
                notification.carconfig904 = values[i];
                break;
            case 905:
                notification.carconfig905 = values[i];
                break;
            case 906:
                notification.carconfig906 = values[i];
                break;
            case 907:
                notification.carconfig907 = values[i];
                break;
            case 908:
                notification.carconfig908 = values[i];
                break;
            case 909:
                notification.carconfig909 = values[i];
                break;
            case 910:
                notification.carconfig910 = values[i];
                break;
            case 911:
                notification.carconfig911 = values[i];
                break;
            case 912:
                notification.carconfig912 = values[i];
                break;
            case 913:
                notification.carconfig913 = values[i];
                break;
            case 914:
                notification.carconfig914 = values[i];
                break;
            case 915:
                notification.carconfig915 = values[i];
                break;
            case 916:
                notification.carconfig916 = values[i];
                break;
            case 917:
                notification.carconfig917 = values[i];
                break;
            case 918:
                notification.carconfig918 = values[i];
                break;
            case 919:
                notification.carconfig919 = values[i];
                break;
            case 920:
                notification.carconfig920 = values[i];
                break;
            case 921:
                notification.carconfig921 = values[i];
                break;
            case 922:
                notification.carconfig922 = values[i];
                break;
            case 923:
                notification.carconfig923 = values[i];
                break;
            case 924:
                notification.carconfig924 = values[i];
                break;
            case 925:
                notification.carconfig925 = values[i];
                break;
            case 926:
                notification.carconfig926 = values[i];
                break;
            case 927:
                notification.carconfig927 = values[i];
                break;
            case 928:
                notification.carconfig928 = values[i];
                break;
            case 929:
                notification.carconfig929 = values[i];
                break;
            case 930:
                notification.carconfig930 = values[i];
                break;
            case 931:
                notification.carconfig931 = values[i];
                break;
            case 932:
                notification.carconfig932 = values[i];
                break;
            case 933:
                notification.carconfig933 = values[i];
                break;
            case 934:
                notification.carconfig934 = values[i];
                break;
            case 935:
                notification.carconfig935 = values[i];
                break;
            case 936:
                notification.carconfig936 = values[i];
                break;
            case 937:
                notification.carconfig937 = values[i];
                break;
            case 938:
                notification.carconfig938 = values[i];
                break;
            case 939:
                notification.carconfig939 = values[i];
                break;
            case 940:
                notification.carconfig940 = values[i];
                break;
            case 941:
                notification.carconfig941 = values[i];
                break;
            case 942:
                notification.carconfig942 = values[i];
                break;
            case 943:
                notification.carconfig943 = values[i];
                break;
            case 944:
                notification.carconfig944 = values[i];
                break;
            case 945:
                notification.carconfig945 = values[i];
                break;
            case 946:
                notification.carconfig946 = values[i];
                break;
            case 947:
                notification.carconfig947 = values[i];
                break;
            case 948:
                notification.carconfig948 = values[i];
                break;
            case 949:
                notification.carconfig949 = values[i];
                break;
            case 950:
                notification.carconfig950 = values[i];
                break;
            case 951:
                notification.carconfig951 = values[i];
                break;
            case 952:
                notification.carconfig952 = values[i];
                break;
            case 953:
                notification.carconfig953 = values[i];
                break;
            case 954:
                notification.carconfig954 = values[i];
                break;
            case 955:
                notification.carconfig955 = values[i];
                break;
            case 956:
                notification.carconfig956 = values[i];
                break;
            case 957:
                notification.carconfig957 = values[i];
                break;
            case 958:
                notification.carconfig958 = values[i];
                break;
            case 959:
                notification.carconfig959 = values[i];
                break;
            case 960:
                notification.carconfig960 = values[i];
                break;
            case 961:
                notification.carconfig961 = values[i];
                break;
            case 962:
                notification.carconfig962 = values[i];
                break;
            case 963:
                notification.carconfig963 = values[i];
                break;
            case 964:
                notification.carconfig964 = values[i];
                break;
            case 965:
                notification.carconfig965 = values[i];
                break;
            case 966:
                notification.carconfig966 = values[i];
                break;
            case 967:
                notification.carconfig967 = values[i];
                break;
            case 968:
                notification.carconfig968 = values[i];
                break;
            case 969:
                notification.carconfig969 = values[i];
                break;
            case 970:
                notification.carconfig970 = values[i];
                break;
            case 971:
                notification.carconfig971 = values[i];
                break;
            case 972:
                notification.carconfig972 = values[i];
                break;
            case 973:
                notification.carconfig973 = values[i];
                break;
            case 974:
                notification.carconfig974 = values[i];
                break;
            case 975:
                notification.carconfig975 = values[i];
                break;
            case 976:
                notification.carconfig976 = values[i];
                break;
            case 977:
                notification.carconfig977 = values[i];
                break;
            case 978:
                notification.carconfig978 = values[i];
                break;
            case 979:
                notification.carconfig979 = values[i];
                break;
            case 980:
                notification.carconfig980 = values[i];
                break;
            case 981:
                notification.carconfig981 = values[i];
                break;
            case 982:
                notification.carconfig982 = values[i];
                break;
            case 983:
                notification.carconfig983 = values[i];
                break;
            case 984:
                notification.carconfig984 = values[i];
                break;
            case 985:
                notification.carconfig985 = values[i];
                break;
            case 986:
                notification.carconfig986 = values[i];
                break;
            case 987:
                notification.carconfig987 = values[i];
                break;
            case 988:
                notification.carconfig988 = values[i];
                break;
            case 989:
                notification.carconfig989 = values[i];
                break;
            case 990:
                notification.carconfig990 = values[i];
                break;
            case 991:
                notification.carconfig991 = values[i];
                break;
            case 992:
                notification.carconfig992 = values[i];
                break;
            case 993:
                notification.carconfig993 = values[i];
                break;
            case 994:
                notification.carconfig994 = values[i];
                break;
            case 995:
                notification.carconfig995 = values[i];
                break;
            case 996:
                notification.carconfig996 = values[i];
                break;
            case 997:
                notification.carconfig997 = values[i];
                break;
            case 998:
                notification.carconfig998 = values[i];
                break;
            case 999:
                notification.carconfig999 = values[i];
                break;
            default:
                break;
        }
    }
    memcpy(buffer, &notification, sizeof(_OpCARCONFIG_Notification));

    bool res = send_message(ser_id, operation_id, buffer, sizeof(_OpCARCONFIG_Notification));
    return res;
}

bool set_srs_signal(int ser_id, int operation_id, std::string srs[], int values[], int len) {
    uint8_t buffer[MAX_PAYLOAD] = {0};
    _OpSRS_Notification notification;
    memset(&notification, 0, sizeof(notification));
    for(int i=0; i<len; i++) {
        if(srs[i]=="passAirbSts"){
            notification.passAirbSts=(uint8_t)values[i];
        }
        else if(srs[i]=="passSeatSts"){
            notification.passSeatSts=(uint8_t)values[i];
        }
        else if(srs[i]=="aDataRawSafeALat"){
            notification.aDataRawSafeALat=(int16_t)values[i];
        }
        else if(srs[i]=="aDataRawSafeALat1Qf"){
            notification.aDataRawSafeALat1Qf=(uint8_t)values[i];
        }
        else if(srs[i]=="aDataRawSafeALgt"){
            notification.aDataRawSafeALgt=(int16_t)values[i];
        }
        else if(srs[i]=="aDataRawSafeALgt1Qf"){
            notification.aDataRawSafeALgt1Qf=(uint8_t)values[i];
        }
        else if(srs[i]=="aDataRawSafeAVert"){
            notification.aDataRawSafeAVert=(int16_t)values[i];
        }
        else if(srs[i]=="aDataRawSafeAVertQf"){
            notification.aDataRawSafeAVertQf=(uint8_t)values[i];
        }
        else if(srs[i]=="aDataRawSafeChks"){
            notification.aDataRawSafeChks=(uint8_t)values[i];
        }
        else if(srs[i]=="aDataRawSafeCntr"){
            notification.aDataRawSafeCntr=(uint8_t)values[i];
        }
        else if(srs[i]=="agDataRawSafeChks"){
            notification.agDataRawSafeChks=(uint8_t)values[i];
        }
        else if(srs[i]=="agDataRawSafeCntr"){
            notification.agDataRawSafeCntr=(uint8_t)values[i];
        }
        else if(srs[i]=="agDataRawSafeRollRate"){
            notification.agDataRawSafeRollRate=(int16_t)values[i];
        }
        else if(srs[i]=="agDataRawSafeRollRateQf"){
            notification.agDataRawSafeRollRateQf=(uint8_t)values[i];
        }
        else if(srs[i]=="agDataRawSafeYawRate"){
            notification.agDataRawSafeYawRate=(int16_t)values[i];
        }
        else if(srs[i]=="agDataRawSafeYawRateQf"){
            notification.agDataRawSafeYawRateQf=(uint8_t)values[i];
        }
        else if(srs[i]=="bltLockStAtDrvrBltLockSt1"){
            notification.bltLockStAtDrvrBltLockSt1=(uint8_t)values[i];
        }
        else if(srs[i]=="bltLockStAtDrvrBltLockSts"){
            notification.bltLockStAtDrvrBltLockSts=(uint8_t)values[i];
        }
    }
    memcpy(buffer, &notification, sizeof(_OpSRS_Notification));
    bool res = send_message(ser_id, operation_id, buffer, sizeof(_OpSRS_Notification));
    return res;
}

bool set_vgm_signal(int ser_id, int operation_id, std::string vgms[], int values[], int len) {
    uint8_t buffer[MAX_PAYLOAD] = {0};
    _OpVGM_Notification notification;
    memset(&notification, 0, sizeof(notification));
    for(int i=0; i<len; i++) {
        if(vgms[i]=="bookChrgnResp"){
            notification.bookChrgnResp=(uint8_t)values[i];
        }
        else if(vgms[i]=="carLocatorSetResp"){
            notification.carLocatorSetResp=(uint8_t)values[i];
        }
        else if(vgms[i]=="digKeyReqSts"){
            notification.digKeyReqSts=(uint8_t)values[i];
        }
        else if(vgms[i]=="intelliClimaEgySaveReq"){
            notification.intelliClimaEgySaveReq=(uint8_t)values[i];
        }
        else if(vgms[i]=="phoneForgottenRmn"){
            notification.phoneForgottenRmn=(uint8_t)values[i];
        }
        else if(vgms[i]=="phoneForgottenRmnBNCM2"){
            notification.phoneForgottenRmnBNCM2=(uint8_t)values[i];
        }
        else if(vgms[i]=="prkgCmftModTiCtrlReq"){
            notification.prkgCmftModTiCtrlReq=(uint8_t)values[i];
        }
        else if(vgms[i]=="remFileDownloadReq"){
            notification.remFileDownloadReq=(uint8_t)values[i];
        }
        else if(vgms[i]=="tcamResetResp"){
            notification.tcamResetResp=(uint8_t)values[i];
        }
        else if(vgms[i]=="wPCModuleSts"){
            notification.wPCModuleSts=(uint8_t)values[i];
        }
        else if(vgms[i]=="wPCModuleStsBNCM2"){
            notification.wPCModuleStsBNCM2=(uint8_t)values[i];
        }
        else if(vgms[i]=="digKeyDataToHMIAcknowledgment"){
            notification.digKeyDataToHMIAcknowledgment=(uint8_t)values[i];
        }
        else if(vgms[i]=="digKeyDataToHMIDKDataByte1"){
            notification.digKeyDataToHMIDKDataByte1=(uint8_t)values[i];
        }
        else if(vgms[i]=="digKeyDataToHMIDKDataByte2"){
            notification.digKeyDataToHMIDKDataByte2=(uint8_t)values[i];
        }
        else if(vgms[i]=="digKeyDataToHMIDKDataByte3"){
            notification.digKeyDataToHMIDKDataByte3=(uint8_t)values[i];
        }
        else if(vgms[i]=="digKeyDataToHMIDKDataByte4"){
            notification.digKeyDataToHMIDKDataByte4=(uint8_t)values[i];
        }
        else if(vgms[i]=="digKeyDataToHMIDKDataByte5"){
            notification.digKeyDataToHMIDKDataByte5=(uint8_t)values[i];
        }
        else if(vgms[i]=="digKeyDataToHMIDKDataByte6"){
            notification.digKeyDataToHMIDKDataByte6=(uint8_t)values[i];
        }
        else if(vgms[i]=="digKeyDataToHMIHeader"){
            notification.digKeyDataToHMIHeader=(uint8_t)values[i];
        }
        else if(vgms[i]=="digKeyGidInfo1Byte0"){
            notification.digKeyGidInfo1Byte0=(uint8_t)values[i];
        }
        else if(vgms[i]=="digKeyGidInfo1Byte1"){
            notification.digKeyGidInfo1Byte1=(uint8_t)values[i];
        }
        else if(vgms[i]=="digKeyGidInfo1Byte2"){
            notification.digKeyGidInfo1Byte2=(uint8_t)values[i];
        }
        else if(vgms[i]=="digKeyGidInfo1Byte3"){
            notification.digKeyGidInfo1Byte3=(uint8_t)values[i];
        }
        else if(vgms[i]=="digKeyGidInfo1Byte4"){
            notification.digKeyGidInfo1Byte4=(uint8_t)values[i];
        }
        else if(vgms[i]=="digKeyGidInfo1Byte5"){
            notification.digKeyGidInfo1Byte5=(uint8_t)values[i];
        }
        else if(vgms[i]=="digKeyGidInfo1Byte6"){
            notification.digKeyGidInfo1Byte6=(uint8_t)values[i];
        }
        else if(vgms[i]=="digKeyGidInfo1Byte7"){
            notification.digKeyGidInfo1Byte7=(uint8_t)values[i];
        }
        else if(vgms[i]=="digKeyGidInfo2Byte0"){
            notification.digKeyGidInfo2Byte0=(uint8_t)values[i];
        }
        else if(vgms[i]=="digKeyGidInfo2Byte1"){
            notification.digKeyGidInfo2Byte1=(uint8_t)values[i];
        }
        else if(vgms[i]=="digKeyGidInfo2Byte2"){
            notification.digKeyGidInfo2Byte2=(uint8_t)values[i];
        }
        else if(vgms[i]=="digKeyGidInfo2Byte3"){
            notification.digKeyGidInfo2Byte3=(uint8_t)values[i];
        }
        else if(vgms[i]=="digKeyGidInfo2Byte4"){
            notification.digKeyGidInfo2Byte4=(uint8_t)values[i];
        }
        else if(vgms[i]=="digKeyGidInfo2Byte5"){
            notification.digKeyGidInfo2Byte5=(uint8_t)values[i];
        }
        else if(vgms[i]=="digKeyGidInfo2Byte6"){
            notification.digKeyGidInfo2Byte6=(uint8_t)values[i];
        }
        else if(vgms[i]=="digKeyGidInfo2Byte7"){
            notification.digKeyGidInfo2Byte7=(uint8_t)values[i];
        }
        else if(vgms[i]=="carLocatorActvSts"){
            notification.carLocatorActvSts=(uint8_t)values[i];
        }
        else if(vgms[i]=="wirelsChrgnPhonePwrPerc"){
            notification.wirelsChrgnPhonePwrPerc=(uint16_t)(ntohs(values[i]));
        }
    }
    memcpy(buffer, &notification, sizeof(_OpVGM_Notification));
    bool res = send_message(ser_id, operation_id, buffer, sizeof(_OpVGM_Notification));
    return res;
}

bool set_climate_signal(int ser_id, int operation_id, std::string climates[],
                        int availabilities[], int data[], int len) {
    uint8_t buffer[MAX_PAYLOAD] = {0};
    _OpClimate_Notification notification;
    memset(&notification, 0, sizeof(notification));
    for (int i = 0; i < len; i++) {
        if (climates[i] == "paclairctrloff") {
            PAIntFuncType paIntFuncType;
            paIntFuncType.availability = ntohl(availabilities[i]);
            paIntFuncType.data = ntohl(data[i]);
            paIntFuncType.format = 0;
            paIntFuncType.status = 0;
            notification.paclairctrloff = paIntFuncType;
        } else if (climates[i] == "paclsecrowonoffswith"){
            PAIntFuncType paIntFuncType;
            paIntFuncType.availability = ntohl(availabilities[i]);
            paIntFuncType.data = ntohl(data[i]);
            paIntFuncType.format = 0;
            paIntFuncType.status = 0;
            notification.paclsecrowonoffswith = paIntFuncType;
        } else if (climates[i] == "paclsync"){
            PAIntFuncType paIntFuncType;
            paIntFuncType.availability = ntohl(availabilities[i]);
            paIntFuncType.data = ntohl(data[i]);
            paIntFuncType.format = 0;
            paIntFuncType.status = 0;
            notification.paclsync = paIntFuncType;
        } else if(climates[i] == "paclac"){
            PAIntFuncType paIntFuncType;
            paIntFuncType.availability = ntohl(availabilities[i]);
            paIntFuncType.data = ntohl(data[i]);
            paIntFuncType.format = 0;
            paIntFuncType.status = 0;
            notification.paclac = paIntFuncType;
        } else if(climates[i] == "paclmaxac"){
            PAIntFuncType paIntFuncType;
            paIntFuncType.availability = ntohl(availabilities[i]);
            paIntFuncType.data = ntohl(data[i]);
            paIntFuncType.format = 0;
            paIntFuncType.status = 0;
            notification.paclmaxac = paIntFuncType;
        } else if(climates[i] == "paclmaxdefrost"){
            PAIntFuncType paIntFuncType;
            paIntFuncType.availability = ntohl(availabilities[i]);
            paIntFuncType.data = ntohl(data[i]);
            paIntFuncType.format = 0;
            paIntFuncType.status = 0;
            notification.paclmaxdefrost = paIntFuncType;
        }
    }
    memcpy(buffer, &notification, sizeof(_OpClimate_Notification));
    bool res = send_message(ser_id, operation_id, buffer, sizeof(_OpClimate_Notification));
    return res;
}

bool set_carconfig1000_signal(int ser_id, int operation_id,int configs[], uint8_t values[], int len){
    uint8_t buffer[MAX_PAYLOAD] = {0};
    _OpCARCONFIGTHOUSAND_Notification notification;
    memset(&notification, 0, sizeof(notification));
    LOGE("++++++cf_size len: %d",len);
    for(int i=0; i<len; i++){
        switch(configs[i]) {
            case 1000:
                notification.carconfig1000 = values[i];
                break;
            case 1001:
                notification.carconfig1001 = values[i];
                break;
            case 1002:
                notification.carconfig1002 = values[i];
                break;
            case 1003:
                notification.carconfig1003 = values[i];
                break;
            case 1004:
                notification.carconfig1004 = values[i];
                break;
            case 1005:
                notification.carconfig1005 = values[i];
                break;
            case 1006:
                notification.carconfig1006 = values[i];
                break;
            case 1007:
                notification.carconfig1007 = values[i];
                break;
            case 1008:
                notification.carconfig1008 = values[i];
                break;
            case 1009:
                notification.carconfig1009 = values[i];
                break;
            case 1010:
                notification.carconfig1010 = values[i];
                break;
            case 1011:
                notification.carconfig1011 = values[i];
                break;
            case 1012:
                notification.carconfig1012 = values[i];
                break;
            case 1013:
                notification.carconfig1013 = values[i];
                break;
            case 1014:
                notification.carconfig1014 = values[i];
                break;
            case 1015:
                notification.carconfig1015 = values[i];
                break;
            case 1016:
                notification.carconfig1016 = values[i];
                break;
            case 1017:
                notification.carconfig1017 = values[i];
                break;
            case 1018:
                notification.carconfig1018 = values[i];
                break;
            case 1019:
                notification.carconfig1019 = values[i];
                break;
            case 1020:
                notification.carconfig1020 = values[i];
                break;
            case 1021:
                notification.carconfig1021 = values[i];
                break;
            case 1022:
                notification.carconfig1022 = values[i];
                break;
            case 1023:
                notification.carconfig1023 = values[i];
                break;
            case 1024:
                notification.carconfig1024 = values[i];
                break;
            case 1025:
                notification.carconfig1025 = values[i];
                break;
            case 1026:
                notification.carconfig1026 = values[i];
                break;
            case 1027:
                notification.carconfig1027 = values[i];
                break;
            case 1028:
                notification.carconfig1028 = values[i];
                break;
            case 1029:
                notification.carconfig1029 = values[i];
                break;
            case 1030:
                notification.carconfig1030 = values[i];
                break;
            case 1031:
                notification.carconfig1031 = values[i];
                break;
            case 1032:
                notification.carconfig1032 = values[i];
                break;
            case 1033:
                notification.carconfig1033 = values[i];
                break;
            case 1034:
                notification.carconfig1034 = values[i];
                break;
            case 1035:
                notification.carconfig1035 = values[i];
                break;
            case 1036:
                notification.carconfig1036 = values[i];
                break;
            case 1037:
                notification.carconfig1037 = values[i];
                break;
            case 1038:
                notification.carconfig1038 = values[i];
                break;
            case 1039:
                notification.carconfig1039 = values[i];
                break;
            case 1040:
                notification.carconfig1040 = values[i];
                break;
            case 1041:
                notification.carconfig1041 = values[i];
                break;
            case 1042:
                notification.carconfig1042 = values[i];
                break;
            case 1043:
                notification.carconfig1043 = values[i];
                break;
            case 1044:
                notification.carconfig1044 = values[i];
                break;
            case 1045:
                notification.carconfig1045 = values[i];
                break;
            case 1046:
                notification.carconfig1046 = values[i];
                break;
            case 1047:
                notification.carconfig1047 = values[i];
                break;
            case 1048:
                notification.carconfig1048 = values[i];
                break;
            case 1049:
                notification.carconfig1049 = values[i];
                break;
            case 1050:
                notification.carconfig1050 = values[i];
                break;
            case 1051:
                notification.carconfig1051 = values[i];
                break;
            case 1052:
                notification.carconfig1052 = values[i];
                break;
            case 1053:
                notification.carconfig1053 = values[i];
                break;
            case 1054:
                notification.carconfig1054 = values[i];
                break;
            case 1055:
                notification.carconfig1055 = values[i];
                break;
            case 1056:
                notification.carconfig1056 = values[i];
                break;
            case 1057:
                notification.carconfig1057 = values[i];
                break;
            case 1058:
                notification.carconfig1058 = values[i];
                break;
            case 1059:
                notification.carconfig1059 = values[i];
                break;
            case 1060:
                notification.carconfig1060 = values[i];
                break;
            case 1061:
                notification.carconfig1061 = values[i];
                break;
            case 1062:
                notification.carconfig1062 = values[i];
                break;
            case 1063:
                notification.carconfig1063 = values[i];
                break;
            case 1064:
                notification.carconfig1064 = values[i];
                break;
            case 1065:
                notification.carconfig1065 = values[i];
                break;
            case 1066:
                notification.carconfig1066 = values[i];
                break;
            case 1067:
                notification.carconfig1067 = values[i];
                break;
            case 1068:
                notification.carconfig1068 = values[i];
                break;
            case 1069:
                notification.carconfig1069 = values[i];
                break;
            case 1070:
                notification.carconfig1070 = values[i];
                break;
            case 1071:
                notification.carconfig1071 = values[i];
                break;
            case 1072:
                notification.carconfig1072 = values[i];
                break;
            case 1073:
                notification.carconfig1073 = values[i];
                break;
            case 1074:
                notification.carconfig1074 = values[i];
                break;
            case 1075:
                notification.carconfig1075 = values[i];
                break;
            case 1076:
                notification.carconfig1076 = values[i];
                break;
            case 1077:
                notification.carconfig1077 = values[i];
                break;
            case 1078:
                notification.carconfig1078 = values[i];
                break;
            case 1079:
                notification.carconfig1079 = values[i];
                break;
            case 1080:
                notification.carconfig1080 = values[i];
                break;
            case 1081:
                notification.carconfig1081 = values[i];
                break;
            case 1082:
                notification.carconfig1082 = values[i];
                break;
            case 1083:
                notification.carconfig1083 = values[i];
                break;
            case 1084:
                notification.carconfig1084 = values[i];
                break;
            case 1085:
                notification.carconfig1085 = values[i];
                break;
            case 1086:
                notification.carconfig1086 = values[i];
                break;
            case 1087:
                notification.carconfig1087 = values[i];
                break;
            case 1088:
                notification.carconfig1088 = values[i];
                break;
            case 1089:
                notification.carconfig1089 = values[i];
                break;
            case 1090:
                notification.carconfig1090 = values[i];
                break;
            case 1091:
                notification.carconfig1091 = values[i];
                break;
            case 1092:
                notification.carconfig1092 = values[i];
                break;
            case 1093:
                notification.carconfig1093 = values[i];
                break;
            case 1094:
                notification.carconfig1094 = values[i];
                break;
            case 1095:
                notification.carconfig1095 = values[i];
                break;
            case 1096:
                notification.carconfig1096 = values[i];
                break;
            case 1097:
                notification.carconfig1097 = values[i];
                break;
            case 1098:
                notification.carconfig1098 = values[i];
                break;
            case 1099:
                notification.carconfig1099 = values[i];
                break;
            case 1100:
                notification.carconfig1100 = values[i];
                break;
            case 1101:
                notification.carconfig1101 = values[i];
                break;
            case 1102:
                notification.carconfig1102 = values[i];
                break;
            case 1103:
                notification.carconfig1103 = values[i];
                break;
            case 1104:
                notification.carconfig1104 = values[i];
                break;
            case 1105:
                notification.carconfig1105 = values[i];
                break;
            case 1106:
                notification.carconfig1106 = values[i];
                break;
            case 1107:
                notification.carconfig1107 = values[i];
                break;
            case 1108:
                notification.carconfig1108 = values[i];
                break;
            case 1109:
                notification.carconfig1109 = values[i];
                break;
            case 1110:
                notification.carconfig1110 = values[i];
                break;
            case 1111:
                notification.carconfig1111 = values[i];
                break;
            case 1112:
                notification.carconfig1112 = values[i];
                break;
            case 1113:
                notification.carconfig1113 = values[i];
                break;
            case 1114:
                notification.carconfig1114 = values[i];
                break;
            case 1115:
                notification.carconfig1115 = values[i];
                break;
            case 1116:
                notification.carconfig1116 = values[i];
                break;
            case 1117:
                notification.carconfig1117 = values[i];
                break;
            case 1118:
                notification.carconfig1118 = values[i];
                break;
            case 1119:
                notification.carconfig1119 = values[i];
                break;
            case 1120:
                notification.carconfig1120 = values[i];
                break;
            case 1121:
                notification.carconfig1121 = values[i];
                break;
            case 1122:
                notification.carconfig1122 = values[i];
                break;
            case 1123:
                notification.carconfig1123 = values[i];
                break;
            case 1124:
                notification.carconfig1124 = values[i];
                break;
            case 1125:
                notification.carconfig1125 = values[i];
                break;
            case 1126:
                notification.carconfig1126 = values[i];
                break;
            case 1127:
                notification.carconfig1127 = values[i];
                break;
            case 1128:
                notification.carconfig1128 = values[i];
                break;
            case 1129:
                notification.carconfig1129 = values[i];
                break;
            case 1130:
                notification.carconfig1130 = values[i];
                break;
            case 1131:
                notification.carconfig1131 = values[i];
                break;
            case 1132:
                notification.carconfig1132 = values[i];
                break;
            case 1133:
                notification.carconfig1133 = values[i];
                break;
            case 1134:
                notification.carconfig1134 = values[i];
                break;
            case 1135:
                notification.carconfig1135 = values[i];
                break;
            case 1136:
                notification.carconfig1136 = values[i];
                break;
            case 1137:
                notification.carconfig1137 = values[i];
                break;
            case 1138:
                notification.carconfig1138 = values[i];
                break;
            case 1139:
                notification.carconfig1139 = values[i];
                break;
            case 1140:
                notification.carconfig1140 = values[i];
                break;
            case 1141:
                notification.carconfig1141 = values[i];
                break;
            case 1146:
                notification.carconfig1146 = values[i];
                break;
            case 1147:
                notification.carconfig1147 = values[i];
                break;
            case 1148:
                notification.carconfig1148 = values[i];
                break;
            case 1149:
                notification.carconfig1149 = values[i];
                break;
            case 1150:
                notification.carconfig1150 = values[i];
                break;
            case 1151:
                notification.carconfig1151 = values[i];
                break;
            case 1152:
                notification.carconfig1152 = values[i];
                break;
            case 1153:
                notification.carconfig1153 = values[i];
                break;
            case 1154:
                notification.carconfig1154 = values[i];
                break;
            case 1155:
                notification.carconfig1155 = values[i];
                break;
            case 1156:
                notification.carconfig1156 = values[i];
                break;
            case 1157:
                notification.carconfig1157 = values[i];
                break;
            case 1158:
                notification.carconfig1158 = values[i];
                break;
            case 1159:
                notification.carconfig1159 = values[i];
                break;
            case 1160:
                notification.carconfig1160 = values[i];
                break;
            case 1161:
                notification.carconfig1161 = values[i];
                break;
            case 1162:
                notification.carconfig1162 = values[i];
                break;
            case 1163:
                notification.carconfig1163 = values[i];
                break;
            case 1164:
                notification.carconfig1164 = values[i];
                break;
            case 1165:
                notification.carconfig1165 = values[i];
                break;
            case 1167:
                notification.carconfig1167 = values[i];
                break;
            case 1168:
                notification.carconfig1168 = values[i];
                break;
            case 1169:
                notification.carconfig1169 = values[i];
                break;
            case 1170:
                notification.carconfig1170 = values[i];
                break;
            case 1171:
                notification.carconfig1171 = values[i];
                break;
            case 1172:
                notification.carconfig1172 = values[i];
                break;
            case 1173:
                notification.carconfig1173 = values[i];
                break;
            case 1174:
                notification.carconfig1174 = values[i];
                break;
            case 1175:
                notification.carconfig1175 = values[i];
                break;
            case 1176:
                notification.carconfig1176 = values[i];
                break;
            case 1177:
                notification.carconfig1177 = values[i];
                break;
            case 1178:
                notification.carconfig1178 = values[i];
                break;
            case 1179:
                notification.carconfig1179 = values[i];
                break;
            case 1180:
                notification.carconfig1180 = values[i];
                break;
            case 1181:
                notification.carconfig1181 = values[i];
                break;
            case 1182:
                notification.carconfig1182 = values[i];
                break;
            case 1183:
                notification.carconfig1183 = values[i];
                break;
            case 1184:
                notification.carconfig1184 = values[i];
                break;
            case 1185:
                notification.carconfig1185 = values[i];
                break;
            case 1186:
                notification.carconfig1186 = values[i];
                break;
            case 1187:
                notification.carconfig1187 = values[i];
                break;
            case 1188:
                notification.carconfig1188 = values[i];
                break;
            case 1189:
                notification.carconfig1189 = values[i];
                break;
            case 1190:
                notification.carconfig1190 = values[i];
                break;
            case 1191:
                notification.carconfig1191 = values[i];
                break;
            case 1192:
                notification.carconfig1192 = values[i];
                break;
            case 1193:
                notification.carconfig1193 = values[i];
                break;
            case 1194:
                notification.carconfig1194 = values[i];
                break;
            case 1195:
                notification.carconfig1195 = values[i];
                break;
            case 1196:
                notification.carconfig1196 = values[i];
                break;
            case 1197:
                notification.carconfig1197 = values[i];
                break;
            case 1198:
                notification.carconfig1198 = values[i];
                break;
            case 1199:
                notification.carconfig1199 = values[i];
                break;
            case 1200:
                notification.carconfig1200 = values[i];
                break;
            case 1213:
                notification.carconfig1213 = values[i];
                break;
            case 1214:
                notification.carconfig1214 = values[i];
                break;
            case 1215:
                notification.carconfig1215 = values[i];
                break;
            case 1216:
                notification.carconfig1216 = values[i];
                break;
            case 1217:
                notification.carconfig1217 = values[i];
                break;
            case 1218:
                notification.carconfig1218 = values[i];
                break;
            case 1219:
                notification.carconfig1219 = values[i];
                break;
            case 1220:
                notification.carconfig1220 = values[i];
                break;
            case 1221:
                notification.carconfig1221 = values[i];
                break;
            case 1222:
                notification.carconfig1222 = values[i];
                break;
            case 1223:
                notification.carconfig1223 = values[i];
                break;
            case 1224:
                notification.carconfig1224 = values[i];
                break;
            case 1225:
                notification.carconfig1225 = values[i];
                break;
            case 1226:
                notification.carconfig1226 = values[i];
                break;
            case 1227:
                notification.carconfig1227 = values[i];
                break;
            case 1228:
                notification.carconfig1228 = values[i];
                break;
            case 1229:
                notification.carconfig1229 = values[i];
                break;
            case 1230:
                notification.carconfig1230 = values[i];
                break;
            case 1231:
                notification.carconfig1231 = values[i];
                break;
            case 1232:
                notification.carconfig1232 = values[i];
                break;
            case 1233:
                notification.carconfig1233 = values[i];
                break;
            case 1234:
                notification.carconfig1234 = values[i];
                break;
            case 1235:
                notification.carconfig1235 = values[i];
                break;
            case 1236:
                notification.carconfig1236 = values[i];
                break;
            case 1237:
                notification.carconfig1237 = values[i];
                break;
            case 1238:
                notification.carconfig1238 = values[i];
                break;
            case 1239:
                notification.carconfig1239 = values[i];
                break;
            case 1240:
                notification.carconfig1240 = values[i];
                break;
            case 1241:
                notification.carconfig1241 = values[i];
                break;
            case 1242:
                notification.carconfig1242 = values[i];
                break;
            case 1243:
                notification.carconfig1243 = values[i];
                break;
            case 1244:
                notification.carconfig1244 = values[i];
                break;
            case 1245:
                notification.carconfig1245 = values[i];
                break;
            case 1246:
                notification.carconfig1246 = values[i];
                break;
            case 1247:
                notification.carconfig1247 = values[i];
                break;
            case 1248:
                notification.carconfig1248 = values[i];
                break;
            case 1249:
                notification.carconfig1249 = values[i];
                break;
            case 1250:
                notification.carconfig1250 = values[i];
                break;
            case 1251:
                notification.carconfig1251 = values[i];
                break;
            case 1252:
                notification.carconfig1252 = values[i];
                break;
            case 1253:
                notification.carconfig1253 = values[i];
                break;
            case 1254:
                notification.carconfig1254 = values[i];
                break;
            case 1255:
                notification.carconfig1255 = values[i];
                break;
        }
    }
    memcpy(buffer, &notification, sizeof(_OpCARCONFIGTHOUSAND_Notification));

    bool res = send_message(ser_id, operation_id, (void *)buffer, sizeof(_OpCARCONFIGTHOUSAND_Notification));
    return res;
}

bool set_timeout_signal(int ser_id, int operation_id,std::string touts[], int values[], int len){
    uint8_t buffer[MAX_PAYLOAD] = {0};
    _OpTIMEOUT_Notification notification;
    memset(&notification, 0, sizeof(notification));

    for(int i=0; i<len; i++) {
        if (touts[i] == "asyALgtIndcrTimeout") {
            notification.asyALgtIndcrTimeout = (uint8_t) values[i];
        } else if (touts[i] == "asyALatIndcrTimeout") {
            notification.asyALatIndcrTimeout = (uint8_t) values[i];
        } else if (touts[i] == "asyHandsOffIndcrTimeout") {
            notification.asyHandsOffIndcrTimeout = (uint8_t) values[i];
        } else if (touts[i] == "crsCtrlrStsTimeout") {
            notification.crsCtrlrStsTimeout = (uint8_t) values[i];
        } else if (touts[i] == "adjSpdLimnStsTimeout") {
            notification.adjSpdLimnStsTimeout = (uint8_t) values[i];
        } else if (touts[i] == "drvrSeatExtAdjAllowdTimeout") {
            notification.drvrSeatExtAdjAllowdTimeout = (uint8_t) values[i];
        } else if (touts[i] == "trOpenerStsTimeout") {
            notification.trOpenerStsTimeout = (uint8_t) values[i];
        } else if (touts[i] == "topPosHmiFeedBackTimeout") {
            notification.topPosHmiFeedBackTimeout = (uint8_t) values[i];
        } else if (touts[i] == "escStTimeout") {
            notification.escStTimeout = (uint8_t) values[i];
        } else if (touts[i] == "extrLtgStsTimeout") {
            notification.extrLtgStsTimeout = (uint8_t) values[i];
        } else if (touts[i] == "carLocatorActvStsTimeout") {
            notification.carLocatorActvStsTimeout = (uint8_t) values[i];
        } else if (touts[i] == "dispHvBattLvlOfChrgTimeout") {
            notification.dispHvBattLvlOfChrgTimeout = (uint8_t) values[i];
        } else if (touts[i] == "onBdChrgrUActTimeout") {
            notification.onBdChrgrUActTimeout = (uint8_t) values[i];
        } else if (touts[i] == "hvBattUDcTimeout") {
            notification.hvBattUDcTimeout = (uint8_t) values[i];
        } else if (touts[i] == "onBdChrgrIActTimeout") {
            notification.onBdChrgrIActTimeout = (uint8_t) values[i];
        } else if (touts[i] == "hvBattIDc1Timeout") {
            notification.hvBattIDc1Timeout = (uint8_t) values[i];
        } else if (touts[i] == "chrgnSpdTimeout") {
            notification.chrgnSpdTimeout = (uint8_t) values[i];
        } else if (touts[i] == "hvBattChrgnTiEstimdTimeout") {
            notification.hvBattChrgnTiEstimdTimeout = (uint8_t) values[i];
        } else if (touts[i] == "maintainBattTFbTimeout") {
            notification.maintainBattTFbTimeout = (uint8_t) values[i];
        } else if (touts[i] == "maxACInpISetFdbTimeout") {
            notification.maxACInpISetFdbTimeout = (uint8_t) values[i];
        } else if (touts[i] == "climaOvrHeatProActvStsTimeout") {
            notification.climaOvrHeatProActvStsTimeout = (uint8_t) values[i];
        } else if (touts[i] == "drvrPfmncSwitchStsTimeout") {
            notification.drvrPfmncSwitchStsTimeout = (uint8_t) values[i];
        } else if (touts[i] == "dchaUActTimeout") {
            notification.dchaUActTimeout = (uint8_t) values[i];
        } else if (touts[i] == "dchaIActTimeout") {
            notification.dchaIActTimeout = (uint8_t) values[i];
        } else if (touts[i] == "dchaEgyActTimeout") {
            notification.dchaEgyActTimeout = (uint8_t) values[i];
        } else if (touts[i] == "chrgLidDCorAcDcStsTimeout") {
            notification.chrgLidDCorAcDcStsTimeout = (uint8_t) values[i];
        } else if (touts[i] == "lockgCenStsTimeout") {
            notification.lockgCenStsTimeout = (uint8_t) values[i];
        } else if (touts[i] == "chrgnOrDisChrgnStsFbTimeout") {
            notification.chrgnOrDisChrgnStsFbTimeout = (uint8_t) values[i];
        } else if (touts[i] == "onBdChrgrHndlSts1Timeout") {
            notification.onBdChrgrHndlSts1Timeout = (uint8_t) values[i];
        } else if (touts[i] == "dCChrgnHndlStsTimeout") {
            notification.dCChrgnHndlStsTimeout = (uint8_t) values[i];
        } else if (touts[i] == "driModButTimeout") {
            notification.driModButTimeout = (uint8_t) values[i];
        } else if (touts[i] == "trlrPrsntTimeout") {
            notification.trlrPrsntTimeout = (uint8_t) values[i];
        } else if (touts[i] == "wPCModuleStsTimeout") {
            notification.wPCModuleStsTimeout = (uint8_t) values[i];
        } else if (touts[i] == "wPCModuleStsBNCM2Timeout") {
            notification.wPCModuleStsBNCM2Timeout = (uint8_t) values[i];
        } else if (touts[i] == "actvnOfIndcrTimeout") {
            notification.actvnOfIndcrTimeout = (uint8_t) values[i];
        } else if (touts[i] == "steerErrReqTimeout") {
            notification.steerErrReqTimeout = (uint8_t) values[i];
        } else if (touts[i] == "carLoctrHornLiSetActvTimeout") {
            notification.carLoctrHornLiSetActvTimeout = (uint8_t) values[i];
        } else if (touts[i] == "dispOfPrpsnModForEvTimeout") {
            notification.dispOfPrpsnModForEvTimeout = (uint8_t) values[i];
        } else if (touts[i] == "brkModSoftSwtStsTimeout") {
            notification.brkModSoftSwtStsTimeout = (uint8_t) values[i];
        } else if (touts[i] == "chrgLidAcStsTimeout") {
            notification.chrgLidAcStsTimeout = (uint8_t) values[i];
        } else if (touts[i] == "ePedlModStsTimeout") {
            notification.ePedlModStsTimeout = (uint8_t) values[i];
        } else if (touts[i] == "autHldSoftSwtEnaStsTimeout") {
            notification.autHldSoftSwtEnaStsTimeout = (uint8_t) values[i];
        } else if (touts[i] == "mirrFoldStsAtDrvrTimeout") {
            notification.mirrFoldStsAtDrvrTimeout = (uint8_t) values[i];
        } else if (touts[i] == "mirrFoldStsAtPassTimeout") {
            notification.mirrFoldStsAtPassTimeout = (uint8_t) values[i];
        } else if (touts[i] == "frntWiprLvrCmd2Timeout") {
            notification.frntWiprLvrCmd2Timeout = (uint8_t) values[i];
        } else if (touts[i] == "softBtnSwtStCfmdTimeout") {
            notification.softBtnSwtStCfmdTimeout = (uint8_t) values[i];
        } else if (touts[i] == "lnchModStsTimeout") {
            notification.lnchModStsTimeout = (uint8_t) values[i];
        } else if (touts[i] == "drvrSeatStsTimeout") {
            notification.drvrSeatStsTimeout = (uint8_t) values[i];
        } else if (touts[i] == "rowFrstPassODSStsTimeout") {
            notification.rowFrstPassODSStsTimeout = (uint8_t) values[i];
        } else if (touts[i] == "rowSecLeODSStsTimeout") {
            notification.rowSecLeODSStsTimeout = (uint8_t) values[i];
        } else if (touts[i] == "rowSecRiODSStsTimeout") {
            notification.rowSecRiODSStsTimeout = (uint8_t) values[i];
        }


    }
    memcpy(buffer, &notification, sizeof(_OpTIMEOUT_Notification));
    LOGE("_OpTIMEOUT_Notification set values done");
    bool res = send_message(ser_id, operation_id, (void *)buffer, sizeof(_OpTIMEOUT_Notification));
    return res;
}

bool set_clima_signal(int ser_id, int operation_id, std::string climates[], int values[], int len) {
    uint8_t buffer[MAX_PAYLOAD] = {0};
     _OpClimate_Notification notification;
    memset(&notification, 0, sizeof(_OpClimate_Notification));
    for(int i=0; i<len; i++) {
        const char* src = climates[i].c_str();
        char arr[strlen(src)];
        strcpy(arr, src);
        char* split = ".";
        char* p1 = strtok(arr, split);
        if (!p1) {
            return false;
        }
        char* p2 = strtok(NULL, split);
        if (!p2) {
            return false;
        }
        if (strcmp(p1, "paclac") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclac.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclac.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclac.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclac.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclauto") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclauto.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclauto.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclauto.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclauto.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclrecirc") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclrecirc.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclrecirc.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclrecirc.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclrecirc.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclmodefrstleft") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclmodefrstleft.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclmodefrstleft.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclmodefrstleft.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclmodefrstleft.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclmodefrstright") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclmodefrstright.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclmodefrstright.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclmodefrstright.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclmodefrstright.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclmodesec") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclmodesec.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclmodesec.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclmodesec.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclmodesec.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclmaxac") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclmaxac.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclmaxac.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclmaxac.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclmaxac.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclfanlevel") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclfanlevel.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclfanlevel.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclfanlevel.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclfanlevel.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "pacllefttemp") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.pacllefttemp.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.pacllefttemp.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.pacllefttemp.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.pacllefttemp.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclrighttemp") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclrighttemp.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclrighttemp.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclrighttemp.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclrighttemp.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclmaxdefrost") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclmaxdefrost.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclmaxdefrost.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclmaxdefrost.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclmaxdefrost.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "pawdcautofrontdefrost") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.pawdcautofrontdefrost.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.pawdcautofrontdefrost.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.pawdcautofrontdefrost.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.pawdcautofrontdefrost.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "pawdcautoreardefrost") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.pawdcautoreardefrost.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.pawdcautoreardefrost.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.pawdcautoreardefrost.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.pawdcautoreardefrost.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclfrontdefrost") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclfrontdefrost.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclfrontdefrost.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclfrontdefrost.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclfrontdefrost.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclreardefrost") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclreardefrost.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclreardefrost.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclreardefrost.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclreardefrost.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclsync") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclsync.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclsync.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclsync.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclsync.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclairctrloff") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclairctrloff.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclairctrloff.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclairctrloff.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclairctrloff.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclhvacrectr") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclhvacrectr.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclhvacrectr.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclhvacrectr.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclhvacrectr.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclseclefttemp") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclseclefttemp.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclseclefttemp.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclseclefttemp.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclseclefttemp.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclsecrighttemp") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclsecrighttemp.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclsecrighttemp.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclsecrighttemp.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclsecrighttemp.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclsecfanlevel") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclsecfanlevel.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclsecfanlevel.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclsecfanlevel.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclsecfanlevel.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclfrntdefrostpopup") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclfrntdefrostpopup.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclfrntdefrostpopup.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclfrntdefrostpopup.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclfrntdefrostpopup.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclreardefrostpopup") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclreardefrostpopup.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclreardefrostpopup.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclreardefrostpopup.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclreardefrostpopup.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclsecrowonoffswith") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclsecrowonoffswith.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclsecrowonoffswith.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclsecrowonoffswith.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclsecrowonoffswith.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclintelliclimapop") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclintelliclimapop.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclintelliclimapop.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclintelliclimapop.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclintelliclimapop.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclclmsmtambientpop") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclclmsmtambientpop.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclclmsmtambientpop.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclclmsmtambientpop.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclclmsmtambientpop.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclclmsmtclosecpop") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclclmsmtclosecpop.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclclmsmtclosecpop.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclclmsmtclosecpop.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclclmsmtclosecpop.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclclmsmtclopasspop") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclclmsmtclopasspop.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclclmsmtclopasspop.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclclmsmtclopasspop.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclclmsmtclopasspop.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclseclockclimasw") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclseclockclimasw.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclseclockclimasw.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclseclockclimasw.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclseclockclimasw.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclsecautosw") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclsecautosw.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclsecautosw.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclsecautosw.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclsecautosw.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclgclean") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclgclean.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclgclean.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclgclean.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclgclean.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclsecclimaautoswith") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclsecclimaautoswith.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclsecclimaautoswith.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclsecclimaautoswith.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclsecclimaautoswith.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclintelliclimaegysavepop") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclintelliclimaegysavepop.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclintelliclimaegysavepop.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclintelliclimaegysavepop.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclintelliclimaegysavepop.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclmodesecri") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclmodesecri.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclmodesecri.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclmodesecri.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclmodesecri.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclfanlevelri") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclfanlevelri.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclfanlevelri.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclfanlevelri.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclfanlevelri.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclsecfanlevelri") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclsecfanlevelri.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclsecfanlevelri.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclsecfanlevelri.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclsecfanlevelri.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclautori") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclautori.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclautori.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclautori.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclautori.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclsecautoswri") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclsecautoswri.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclsecautoswri.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclsecautoswri.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclsecautoswri.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclpasstempsync") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclpasstempsync.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclpasstempsync.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclpasstempsync.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclpasstempsync.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclclimsmartonoroff") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclclimsmartonoroff.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclclimsmartonoroff.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclclimsmartonoroff.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclclimsmartonoroff.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "pacldrvrctrlswt") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.pacldrvrctrlswt.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.pacldrvrctrlswt.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.pacldrvrctrlswt.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.pacldrvrctrlswt.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclpassctrlswt") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclpassctrlswt.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclpassctrlswt.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclpassctrlswt.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclpassctrlswt.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclintelligentlycleanin") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclintelligentlycleanin.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclintelligentlycleanin.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclintelligentlycleanin.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclintelligentlycleanin.status = (int32_t)(ntohl(values[i]));
            }
        }
        else if (strcmp(p1, "paclventilation") == 0){
            if (strcmp(p2, "availability") == 0){
                notification.paclventilation.availability = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "data") == 0){
                notification.paclventilation.data = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "format") == 0){
                notification.paclventilation.format = (int32_t)(ntohl(values[i]));
            }
            else if (strcmp(p2, "status") == 0){
                notification.paclventilation.status = (int32_t)(ntohl(values[i]));
            }
        }
    }
    memcpy(buffer, &notification, sizeof(_OpClimate_Notification));
    LOGE("_OpClimate_Notification set values done");
    bool res = send_message(ser_id, operation_id, (void *)buffer, sizeof(_OpClimate_Notification));
    return res;
}

bool set_cem_signal(int ser_id, int operation_id, std::string cems[], int values[], int len) {
    uint8_t buffer[MAX_PAYLOAD] = {0};
    _OpCEM_Notification notification;
    memset(&notification, 0, sizeof(notification));
    for (int i = 0; i < len; i++) {
        if(cems[i]=="extrLtgStsReFog"){
            notification.extrLtgStsReFog=(uint8_t)values[i];
        }
        else if(cems[i]=="swtExtrLi2LiExtFctReq1"){
            notification.swtExtrLi2LiExtFctReq1=(uint8_t)values[i];
        }
        else if(cems[i]=="autoDeHumPopUp"){
            notification.autoDeHumPopUp=(uint8_t)values[i];
        }
        else if(cems[i]=="chdLockRightStsToHmi"){
            notification.chdLockRightStsToHmi=(uint8_t)values[i];
        }
        else if(cems[i]=="chdPrtnLeftStsToHmi"){
            notification.chdPrtnLeftStsToHmi=(uint8_t)values[i];
        }
        else if(cems[i]=="ecoClimaSts"){
            notification.ecoClimaSts=(uint8_t)values[i];
        }
        else if(cems[i]=="readLiStsFirstRowLe"){
            notification.readLiStsFirstRowLe=(uint8_t)values[i];
        }
        else if(cems[i]=="readLiStsFirstRowRi"){
            notification.readLiStsFirstRowRi=(uint8_t)values[i];
        }
        else if(cems[i]=="readLiStsSecondRowLe"){
            notification.readLiStsSecondRowLe=(uint8_t)values[i];
        }
        else if(cems[i]=="readLiStsSecondRowRi"){
            notification.readLiStsSecondRowRi=(uint8_t)values[i];
        }
        else if(cems[i]=="readLiStsThirdRowLe"){
            notification.readLiStsThirdRowLe=(uint8_t)values[i];
        }
        else if(cems[i]=="readLiStsThirdRowRi"){
            notification.readLiStsThirdRowRi=(uint8_t)values[i];
        }
        else if(cems[i]=="seatHeatgLvlStsRowSecLe"){
            notification.seatHeatgLvlStsRowSecLe=(uint8_t)values[i];
        }
        else if(cems[i]=="seatHeatgLvlStsRowSecRi"){
            notification.seatHeatgLvlStsRowSecRi=(uint8_t)values[i];
        }
        else if(cems[i]=="seatVentnLvlStsRowSecLe"){
            notification.seatVentnLvlStsRowSecLe=(uint8_t)values[i];
        }
        else if(cems[i]=="seatVentnLvlStsRowSecRi"){
            notification.seatVentnLvlStsRowSecRi=(uint8_t)values[i];
        }
        else if(cems[i]=="rowFrstPassODSSts"){
            notification.rowFrstPassODSSts=(uint8_t)values[i];
        }
        else if(cems[i]=="rowSecLeODSSts"){
            notification.rowSecLeODSSts=(uint8_t)values[i];
        }
        else if(cems[i]=="rowSecRiODSSts"){
            notification.rowSecRiODSSts=(uint8_t)values[i];
        }
        else if(cems[i]=="drvrSeatVentnLvlSts"){
            notification.drvrSeatVentnLvlSts=(uint8_t)values[i];
        }
        else if(cems[i]=="passSeatVentnLvlSts"){
            notification.passSeatVentnLvlSts=(uint8_t)values[i];
        }
        else if(cems[i]=="drvrSeatHeatgAvlSts"){
            notification.drvrSeatHeatgAvlSts=(uint8_t)values[i];
        }
        else if(cems[i]=="passSeatHeatgAvlSts"){
            notification.passSeatHeatgAvlSts=(uint8_t)values[i];
        }
        else if(cems[i]=="seatHeatgAvlStsRowSecLe"){
            notification.seatHeatgAvlStsRowSecLe=(uint8_t)values[i];
        }
        else if(cems[i]=="seatHeatgAvlStsRowSecRi"){
            notification.seatHeatgAvlStsRowSecRi=(uint8_t)values[i];
        }
        else if(cems[i]=="drvrSeatHeatgLvlSts"){
            notification.drvrSeatHeatgLvlSts=(uint8_t)values[i];
        }
        else if(cems[i]=="passSeatHeatgLvlSts"){
            notification.passSeatHeatgLvlSts=(uint8_t)values[i];
        }
        else if(cems[i]=="drvrSeatVentAvlSts"){
            notification.drvrSeatVentAvlSts=(uint8_t)values[i];
        }
        else if(cems[i]=="passSeatVentAvlSts"){
            notification.passSeatVentAvlSts=(uint8_t)values[i];
        }
        else if(cems[i]=="seatVentAvlStsRowSecLe"){
            notification.seatVentAvlStsRowSecLe=(uint8_t)values[i];
        }
        else if(cems[i]=="seatVentAvlStsRowSecRi"){
            notification.seatVentAvlStsRowSecRi=(uint8_t)values[i];
        }
        else if(cems[i]=="winDsblLeftSts"){
            notification.winDsblLeftSts=(uint8_t)values[i];
        }
        else if(cems[i]=="winDsblRightSts"){
            notification.winDsblRightSts=(uint8_t)values[i];
        }
        else if(cems[i]=="steerWhlHeatgAvlSts"){
            notification.steerWhlHeatgAvlSts=(uint8_t)values[i];
        }
        else if(cems[i]=="steerWhlHeatgLvlSts"){
            notification.steerWhlHeatgLvlSts=(uint8_t)values[i];
        }
        else if(cems[i]=="topPosHmiFeedBack"){
            notification.topPosHmiFeedBack=(uint8_t)values[i];
        }
        else if(cems[i]=="trAntiPnch"){
            notification.trAntiPnch=(uint8_t)values[i];
        }
        else if(cems[i]=="trObstclDetn"){
            notification.trObstclDetn=(uint8_t)values[i];
        }
        else if(cems[i]=="trOpenerSts"){
            notification.trOpenerSts=(uint8_t)values[i];
        }
        else if(cems[i]=="waitModSts"){
            notification.waitModSts=(uint8_t)values[i];
        }
        else if(cems[i]=="winRfClsdReqForCoolgDwn"){
            notification.winRfClsdReqForCoolgDwn=(uint8_t)values[i];
        }
        else if(cems[i]=="outdAirQlyOutdAirQly"){
            notification.outdAirQlyOutdAirQly=(uint8_t)values[i];
        }
        else if(cems[i]=="outdAirQlyQf"){
            notification.outdAirQlyQf=(uint8_t)values[i];
        }
        else if(cems[i]=="vehModMngtGlbSafe1CarModSts1"){
            notification.vehModMngtGlbSafe1CarModSts1=(uint8_t)values[i];
        }
        else if(cems[i]=="vehModMngtGlbSafe1UsgModSts"){
            notification.vehModMngtGlbSafe1UsgModSts=(uint8_t)values[i];
        }
        else if(cems[i]=="vehModMngtGlbSafe1CarModSubtypWdCarModSubtyp"){
            notification.vehModMngtGlbSafe1CarModSubtypWdCarModSubtyp=(uint8_t)values[i];
        }
        else if(cems[i]=="vehModMngtGlbSafe1Chks"){
            notification.vehModMngtGlbSafe1Chks=(uint8_t)values[i];
        }
        else if(cems[i]=="vehModMngtGlbSafe1Cntr"){
            notification.vehModMngtGlbSafe1Cntr=(uint8_t)values[i];
        }
        else if(cems[i]=="extrLtgStsAFS"){
            notification.extrLtgStsAFS=(uint8_t)values[i];
        }
        else if(cems[i]=="vehModMngtGlbSafe1EgyLvlElecMai"){
            notification.vehModMngtGlbSafe1EgyLvlElecMai=(uint8_t)values[i];
        }
        else if(cems[i]=="extrLtgStsAHBC"){
            notification.extrLtgStsAHBC=(uint8_t)values[i];
        }
        else if(cems[i]=="vehModMngtGlbSafe1EgyLvlElecSubtyp"){
            notification.vehModMngtGlbSafe1EgyLvlElecSubtyp=(uint8_t)values[i];
        }
        else if(cems[i]=="extrLtgStsAHL"){
            notification.extrLtgStsAHL=(uint8_t)values[i];
        }
        else if(cems[i]=="vehModMngtGlbSafe1FltEgyCnsWdSts"){
            notification.vehModMngtGlbSafe1FltEgyCnsWdSts=(uint8_t)values[i];
        }
        else if(cems[i]=="extrLtgStsAllWL"){
            notification.extrLtgStsAllWL=(uint8_t)values[i];
        }
        else if(cems[i]=="vehModMngtGlbSafe1PwrLvlElecMai"){
            notification.vehModMngtGlbSafe1PwrLvlElecMai=(uint8_t)values[i];
        }
        else if(cems[i]=="extrLtgStsApproach"){
            notification.extrLtgStsApproach=(uint8_t)values[i];
        }
        else if(cems[i]=="vehModMngtGlbSafe1PwrLvlElecSubtyp"){
            notification.vehModMngtGlbSafe1PwrLvlElecSubtyp=(uint8_t)values[i];
        }
        else if(cems[i]=="extrLtgStsChks"){
            notification.extrLtgStsChks=(uint8_t)values[i];
        }
        else if(cems[i]=="extrLtgStsCntr"){
            notification.extrLtgStsCntr=(uint8_t)values[i];
        }
        else if(cems[i]=="extrLtgStsCornrgLi"){
            notification.extrLtgStsCornrgLi=(uint8_t)values[i];
        }
        else if(cems[i]=="extrLtgStsDBL"){
            notification.extrLtgStsDBL=(uint8_t)values[i];
        }
        else if(cems[i]=="extrLtgStsDRL"){
            notification.extrLtgStsDRL=(uint8_t)values[i];
        }
        else if(cems[i]=="extrLtgStsFlash"){
            notification.extrLtgStsFlash=(uint8_t)values[i];
        }
        else if(cems[i]=="extrLtgStsFrntFog"){
            notification.extrLtgStsFrntFog=(uint8_t)values[i];
        }
        else if(cems[i]=="extrLtgStsGoodbye"){
            notification.extrLtgStsGoodbye=(uint8_t)values[i];
        }
        else if(cems[i]=="extrLtgStsHWL"){
            notification.extrLtgStsHWL=(uint8_t)values[i];
        }
        else if(cems[i]=="extrLtgStsHiBeam"){
            notification.extrLtgStsHiBeam=(uint8_t)values[i];
        }
        else if(cems[i]=="extrLtgStsHomeSafe"){
            notification.extrLtgStsHomeSafe=(uint8_t)values[i];
        }
        else if(cems[i]=="extrLtgStsLoBeam"){
            notification.extrLtgStsLoBeam=(uint8_t)values[i];
        }
        else if(cems[i]=="extrLtgStsLtgShow"){
            notification.extrLtgStsLtgShow=(uint8_t)values[i];
        }
        else if(cems[i]=="extrLtgStsPosLiFrnt"){
            notification.extrLtgStsPosLiFrnt=(uint8_t)values[i];
        }
        else if(cems[i]=="extrLtgStsPosLiRe"){
            notification.extrLtgStsPosLiRe=(uint8_t)values[i];
        }
        else if(cems[i]=="extrLtgStsReverseLi"){
            notification.extrLtgStsReverseLi=(uint8_t)values[i];
        }
        else if(cems[i]=="extrLtgStsStopLi"){
            notification.extrLtgStsStopLi=(uint8_t)values[i];
        }
        else if(cems[i]=="extrLtgStsTurnIndrLe"){
            notification.extrLtgStsTurnIndrLe=(uint8_t)values[i];
        }
        else if(cems[i]=="extrLtgStsTurnIndrRi"){
            notification.extrLtgStsTurnIndrRi=(uint8_t)values[i];
        }
        else if(cems[i]=="extrLtgStsWelcome"){
            notification.extrLtgStsWelcome=(uint8_t)values[i];
        }
        else if(cems[i]=="swtExtrLi2LiExtFctCntr"){
            notification.swtExtrLi2LiExtFctCntr=(uint8_t)values[i];
        }
        else if(cems[i]=="swtExtrLi2LiExtFctCrc"){
            notification.swtExtrLi2LiExtFctCrc=(uint8_t)values[i];
        }
        else if(cems[i]=="swtExtrLi2LiExtFctQf"){
            notification.swtExtrLi2LiExtFctQf=(uint8_t)values[i];
        }
        else if(cems[i]=="trlrPrsnt"){
            notification.trlrPrsnt=(uint8_t)values[i];
        }
        else if(cems[i]=="trlrLiTurnIndcrActvt"){
            notification.trlrLiTurnIndcrActvt=(uint8_t)values[i];
        }
        else if(cems[i]=="trlrLampChkSts"){
            notification.trlrLampChkSts=(uint8_t)values[i];
        }
        else if(cems[i]=="airFragCh1RunngSts"){
            notification.airFragCh1RunngSts=(uint8_t)values[i];
        }
        else if(cems[i]=="airFragCh2RunngSts"){
            notification.airFragCh2RunngSts=(uint8_t)values[i];
        }
        else if(cems[i]=="airFragCh3RunngSts"){
            notification.airFragCh3RunngSts=(uint8_t)values[i];
        }
        else if(cems[i]=="airFragCh4RunngSts"){
            notification.airFragCh4RunngSts=(uint8_t)values[i];
        }
        else if(cems[i]=="airFragCh5RunngSts"){
            notification.airFragCh5RunngSts=(uint8_t)values[i];
        }
        else if(cems[i]=="chrgnLtgSts"){
            notification.chrgnLtgSts=(uint8_t)values[i];
        }
        else if(cems[i]=="climaOvrHeatProActvSts"){
            notification.climaOvrHeatProActvSts=(uint8_t)values[i];
        }
        else if(cems[i]=="fragCh1Id"){
            notification.fragCh1Id=(uint8_t)values[i];
        }
        else if(cems[i]=="fragCh1UseUpWrn"){
            notification.fragCh1UseUpWrn=(uint8_t)values[i];
        }
        else if(cems[i]=="fragCh2Id"){
            notification.fragCh2Id=(uint8_t)values[i];
        }
        else if(cems[i]=="fragCh2UseUpWrn"){
            notification.fragCh2UseUpWrn=(uint8_t)values[i];
        }
        else if(cems[i]=="fragCh3Id"){
            notification.fragCh3Id=(uint8_t)values[i];
        }
        else if(cems[i]=="fragCh3UseUpWrn"){
            notification.fragCh3UseUpWrn=(uint8_t)values[i];
        }
        else if(cems[i]=="fragCh4Id"){
            notification.fragCh4Id=(uint8_t)values[i];
        }
        else if(cems[i]=="fragCh4UseUpWrn"){
            notification.fragCh4UseUpWrn=(uint8_t)values[i];
        }
        else if(cems[i]=="fragCh5Id"){
            notification.fragCh5Id=(uint8_t)values[i];
        }
        else if(cems[i]=="fragCh5UseUpWrn"){
            notification.fragCh5UseUpWrn=(uint8_t)values[i];
        }
        else if(cems[i]=="fragLvlFrmClima"){
            notification.fragLvlFrmClima=(uint8_t)values[i];
        }
        else if(cems[i]=="fragRefreshPopUp"){
            notification.fragRefreshPopUp=(uint8_t)values[i];
        }
        else if(cems[i]=="fragStsFrmClima"){
            notification.fragStsFrmClima=(uint8_t)values[i];
        }
        else if(cems[i]=="ambTRawAmbTVal"){
            notification.ambTRawAmbTVal=(uint16_t)(ntohs(values[i]));
        }
        else if(cems[i]=="ambTRawQly"){
            notification.ambTRawQly=(uint8_t)values[i];
        }
        else if(cems[i]=="actvnOfIndcrIndcrOut"){
            notification.actvnOfIndcrIndcrOut=(uint8_t)values[i];
        }
        else if(cems[i]=="doorDrvrSts"){
            notification.doorDrvrSts=(uint8_t)values[i];
        }
        else if(cems[i]=="doorPassSts"){
            notification.doorPassSts=(uint8_t)values[i];
        }
        else if(cems[i]=="drvrSeatSwtCushExtSts"){
            notification.drvrSeatSwtCushExtSts=(uint8_t)values[i];
        }
        else if(cems[i] == "passSeatSwtCushExtSts"){
            notification.passSeatSwtCushExtSts = (uint8_t)values[i];
        }
        else if(cems[i] == "ambIllmnFwdStsAmblillmn1")
        {
            notification.ambIllmnFwdStsAmblillmn1=(uint16_t)(ntohs(values[i]));
        }
        else if(cems[i]=="ambIllmnFwdStsAmblillmn2"){
            notification.ambIllmnFwdStsAmblillmn2=(uint8_t)values[i];
        }
        else if(cems[i]=="twliBriSts"){
            notification.twliBriSts=(uint8_t)values[i];
        }
        else if(cems[i]=="leFrntTireMsgPWarnFlg"){
            notification.leFrntTireMsgPWarnFlg=(uint8_t)values[i];
        }
        else if(cems[i]=="leFrntTireMsgTWarnFlg"){
            notification.leFrntTireMsgTWarnFlg=(uint8_t)values[i];
        }
        else if(cems[i]=="leFrntTireMsgSysWarnFlg"){
            notification.leFrntTireMsgSysWarnFlg=(uint8_t)values[i];
        }
        else if(cems[i]=="leFrntTireMsgFastLoseWarnFlg"){
            notification.leFrntTireMsgFastLoseWarnFlg=(uint8_t)values[i];
        }
        else if(cems[i]=="leFrntTireMsgBattLoSt"){
            notification.leFrntTireMsgBattLoSt=(uint8_t)values[i];
        }
        else if (cems[i] == "winPosnStsAtDrvr") {
            notification.winPosnStsAtDrvr = (uint8_t) values[i];
        }
        else if (cems[i] == "winPosnStsAtPass") {
            notification.winPosnStsAtPass = (uint8_t) values[i];
        }
        else if (cems[i] == "winPosnStsAtReLe") {
            notification.winPosnStsAtReLe = (uint8_t) values[i];
        }
        else if (cems[i] == "winPosnStsAtReRi") {
            notification.winPosnStsAtReRi = (uint8_t) values[i];
        }
        else if (cems[i] == "frntWiprLvrCmd2FrntWiprLvrCmd1") {
            notification.frntWiprLvrCmd2FrntWiprLvrCmd1 = (uint8_t) values[i];
        }
        else if (cems[i] == "steerWhlHeatgStrtAutCdnOk") {
            notification.steerWhlHeatgStrtAutCdnOk = (uint8_t) values[i];
        }
        else if(cems[i]=="leFrntTireMsgP"){
            notification.leFrntTireMsgP=(uint8_t)values[i];
        }
        else if(cems[i]=="riFrntTireMsgP"){
            notification.riFrntTireMsgP=(uint8_t)values[i];
        }
        else if(cems[i]=="leReTireMsgP"){
            notification.leReTireMsgP=(uint8_t)values[i];
        }
        else if(cems[i]=="riReTireMsgP"){
            notification.riReTireMsgP=(uint8_t)values[i];
        }
        else if(cems[i]=="leFrntTireMsgT"){
            notification.leFrntTireMsgT=(uint8_t)values[i];
        }
        else if(cems[i]=="riFrntTireMsgT"){
            notification.riFrntTireMsgT=(uint8_t)values[i];
        }
        else if(cems[i]=="leReTireMsgT"){
            notification.leReTireMsgT=(uint8_t)values[i];
        }
        else if(cems[i]=="riReTireMsgT"){
            notification.riReTireMsgT=(uint8_t)values[i];
        }
        else if(cems[i]=="airFragCh1AvlTi"){
            notification.airFragCh1AvlTi=(uint16_t)(ntohs(values[i]));
        }
        else if(cems[i]=="airFragCh2AvlTi"){
            notification.airFragCh2AvlTi=(uint16_t)(ntohs(values[i]));
        }
        else if(cems[i]=="airFragCh3AvlTi"){
            notification.airFragCh3AvlTi=(uint16_t)(ntohs(values[i]));
        }
        else if(cems[i]=="airFragCh4AvlTi"){
            notification.airFragCh4AvlTi=(uint16_t)(ntohs(values[i]));
        }
        else if(cems[i]=="airFragCh5AvlTi"){
            notification.airFragCh5AvlTi=(uint16_t)(ntohs(values[i]));
        }
        else if(cems[i]=="intPm25VluFrmClima"){
            notification.intPm25VluFrmClima=(uint16_t)(ntohs(values[i]));
        }
        else if(cems[i]=="intPm25LvlFrmClima"){
            notification.intPm25LvlFrmClima=(uint8_t)values[i];
        }
        else if(cems[i]=="intPm25StsFrmClima"){
            notification.intPm25StsFrmClima=(uint8_t)values[i];
        }
        else if(cems[i]=="intPm25HiPopUp"){
            notification.intPm25HiPopUp=(uint8_t)values[i];
        }
        else if(cems[i]=="climaOffReq"){
            notification.climaOffReq=(uint8_t)values[i];
        }
        else if(cems[i]=="sunCurtClsAutEnaSts"){
            notification.sunCurtClsAutEnaSts=(uint8_t)values[i];
        }
        else if(cems[i]=="drvrSeatSts"){
            notification.drvrSeatSts=(uint8_t)values[i];
            LOGE("zhang add app %d", notification.drvrSeatSts);
        }
        else if(cems[i]=="rowFrstPassODSSts"){
            notification.rowFrstPassODSSts=(uint8_t)values[i];
        }
        else if(cems[i]=="rowSecLeODSSts"){
            notification.rowSecLeODSSts=(uint8_t)values[i];
        }
        else if(cems[i]=="rowSecRiODSSts"){
            notification.rowSecRiODSSts=(uint8_t)values[i];
        }else if (cems[i]=="frntHvacBlowerSts"){
            notification.frntHvacBlowerSts=(uint8_t)values[i];
        }
    }
    memcpy(buffer, &notification, sizeof(_OpCEM_Notification));
    bool res = send_message(ser_id, operation_id, buffer, sizeof(_OpCEM_Notification));
    return res;
}

bool set_bbm_signal(int ser_id, int operation_id, std::string bbmms[], int values[], int len) {
    uint8_t buffer[MAX_PAYLOAD] = {0};
    _OpBBM_Notification notification;
    memset(&notification, 0, sizeof(notification));
    for (int i = 0; i < len; i++) {
        if(bbmms[i]=="epbApplyEnaSec"){
            notification.epbApplyEnaSec=(uint8_t)values[i];
        }
        else if(bbmms[i]=="epbRelsEnaSec"){
            notification.epbRelsEnaSec=(uint8_t)values[i];
        }
        else if(bbmms[i]=="brkModSoftSwtStsAvlSts"){
            notification.brkModSoftSwtStsAvlSts=(uint8_t)values[i];
        }
        else if(bbmms[i]=="brkModSoftSwtStsEnaSts"){
            notification.brkModSoftSwtStsEnaSts=(uint8_t)values[i];
        }
        else if(bbmms[i]=="vehMtnStVehMtnSt") {
            notification.vehMtnStVehMtnSt=(uint8_t)values[i];
        }
    }
    memcpy(buffer, &notification, sizeof(_OpBBM_Notification));
    bool res = send_message(ser_id, operation_id, buffer, sizeof(_OpBBM_Notification));
    return res;
}

bool set_vddm_signal(int ser_id, int operation_id, std::string vddms[], int values[], int len) {
    uint8_t buffer[MAX_PAYLOAD] = {0};
    _OpVDDM_Notification notification;
    memset(&notification, 0, sizeof(notification));
    for(int i=0; i<len; i++) {
        if(vddms[i] == "adjSpdLimnSts"){
            notification.adjSpdLimnSts=(uint8_t)values[i];
        }
        else if(vddms[i] == "autHldSoftSwtEnaSts"){
            notification.autHldSoftSwtEnaSts=(uint8_t)values[i];
        }
        else if(vddms[i] == "bookChargeSetResponse"){
            notification.bookChargeSetResponse=(uint8_t)values[i];
        }
        else if(vddms[i] == "bookChrgnTarValFb"){
            notification.bookChrgnTarValFb=(uint16_t)(ntohs(values[i]));
        }
        else if(vddms[i] == "chrgnOrDisChrgnStsFb"){
            notification.chrgnOrDisChrgnStsFb=(uint8_t)values[i];
        }
        else if(vddms[i] == "chrgnSpd"){
            notification.chrgnSpd=(uint16_t)(ntohs(values[i]));
        }
        else if(vddms[i] == "chrgnSts"){
            notification.chrgnSts=(uint8_t)values[i];
        }
        else if(vddms[i] == "crsCtrlrSts"){
            notification.crsCtrlrSts=(uint8_t)values[i];
        }
        else if(vddms[i] == "dCChrgSt"){
            notification.dCChrgSt=(uint8_t)values[i];
        }
        else if(vddms[i] == "dCChrgnHndlSts"){
            notification.dCChrgnHndlSts=(uint8_t)values[i];
        }
        else if(vddms[i] == "dchaChrgnTarValFb"){
            notification.dchaChrgnTarValFb=(uint16_t)(ntohs(values[i]));
        }
        else if(vddms[i] == "dchaEgyAct"){
            notification.dchaEgyAct=(uint16_t)(ntohs(values[i]));
        }
        else if(vddms[i] == "dchaIAct"){
            notification.dchaIAct=(uint16_t)(ntohs(values[i]));
        }
        else if(vddms[i] == "dchaStopByTarDrvrIndcn"){
            notification.dchaStopByTarDrvrIndcn=(uint8_t)values[i];
        }
        else if(vddms[i] == "dchaUAct"){
            notification.dchaUAct=(uint16_t)(ntohs(values[i]));
        }
        else if(vddms[i] == "dispHvBattLvlOfChrg"){
            notification.dispHvBattLvlOfChrg=(uint16_t)(ntohs(values[i]));
        }
        else if(vddms[i] == "dispOfPrpsnModForEv"){
            notification.dispOfPrpsnModForEv=(uint8_t)values[i];
        }
        else if(vddms[i] == "dstEstimdToEmptyForDrvgElec"){
            notification.dstEstimdToEmptyForDrvgElec=(uint16_t)(ntohs(values[i]));
        }
        else if(vddms[i] == "dstEstimdToEmptyForDrvgElecPred"){
            notification.dstEstimdToEmptyForDrvgElecPred=(uint16_t)(ntohs(values[i]));
        }
        else if(vddms[i] == "dstEstimdToEmptyForTarSoc1"){
            notification.dstEstimdToEmptyForTarSoc1=(uint16_t)(ntohs(values[i]));
        }
        else if(vddms[i] == "dstEstimdToEmptyForTarSoc2"){
            notification.dstEstimdToEmptyForTarSoc2=(uint16_t)(ntohs(values[i]));
        }
        else if(vddms[i] == "dstFromDestinationFb"){
            notification.dstFromDestinationFb=(uint8_t)values[i];
        }
        else if(vddms[i] == "ePedlDrvrIndcnMsg"){
            notification.ePedlDrvrIndcnMsg=(uint8_t)values[i];
        }
        else if(vddms[i] == "ePedlInhbnSts"){
            notification.ePedlInhbnSts=(uint8_t)values[i];
        }
        else if(vddms[i] == "ePedlModSts"){
            notification.ePedlModSts=(uint8_t)values[i];
        }
        else if(vddms[i] == "egyRgnLvlAct"){
            notification.egyRgnLvlAct=(uint8_t)values[i];
        }
        else if(vddms[i] == "epbApplyEna"){
            notification.epbApplyEna=(uint8_t)values[i];
        }
        else if(vddms[i] == "epbRelsEna"){
            notification.epbRelsEna=(uint8_t)values[i];
        }
        else if(vddms[i] == "escCtrlIndcn"){
            notification.escCtrlIndcn=(uint8_t)values[i];
        }
        else if(vddms[i] == "gearLvrIndcn"){
            notification.gearLvrIndcn=(uint8_t)values[i];
        }
        else if(vddms[i] == "hvBattCap"){
            notification.hvBattCap=(uint16_t)(htons(values[i]));
        }
        else if(vddms[i] == "hvBattChrgnTiEstimd"){
            notification.hvBattChrgnTiEstimd=(uint16_t)(ntohs(values[i]));
        }
        else if(vddms[i] == "hvBattDchaTiEstimd"){
            notification.hvBattDchaTiEstimd=(uint16_t)(ntohs(values[i]));
        }
        else if(vddms[i] == "hvBattIDc1"){
            notification.hvBattIDc1=(uint16_t)(ntohs(values[i]));
        }
        else if(vddms[i] == "hvBattLimnIndcn"){
            notification.hvBattLimnIndcn=(uint16_t)(ntohs(values[i]));
        }
        else if(vddms[i] == "hvBattSupChrgThermSts"){
            notification.hvBattSupChrgThermSts=(uint8_t)values[i];
        }
        else if(vddms[i] == "hvBattThermPwrCns"){
            notification.hvBattThermPwrCns=(uint16_t)(ntohs(values[i]));
        }
        else if(vddms[i] == "hvBattUDc"){
            notification.hvBattUDc=(uint16_t)(htons(values[i]));
        }
        else if(vddms[i] == "hvCabinThermPwrCns"){
            notification.hvCabinThermPwrCns=(uint16_t)(ntohs(values[i]));
        }
        else if(vddms[i] == "iDcDcActHiSide"){
            notification.iDcDcActHiSide=(uint16_t)(ntohs(values[i]));
        }
        else if(vddms[i] == "isgUDc800"){
            notification.isgUDc800=(uint16_t)(ntohs(values[i]));
        }
        else if(vddms[i] == "lnchModIndcnMsg"){
            notification.lnchModIndcnMsg=(uint8_t)values[i];
        }
        else if(vddms[i] == "lnchModSts"){
            notification.lnchModSts=(uint8_t)values[i];
        }
        else if(vddms[i] == "maintainBattTFb"){
            notification.maintainBattTFb=(uint8_t)values[i];
        }
        else if(vddms[i] == "maxACInpISetFdb"){
            notification.maxACInpISetFdb=(uint8_t)values[i];
        }
        else if(vddms[i] == "msgReqByHillDwnCtrl"){
            notification.msgReqByHillDwnCtrl=(uint8_t)values[i];
        }
        else if(vddms[i] == "onBdChrgrHndlSts1"){
            notification.onBdChrgrHndlSts1=(uint8_t)values[i];
        }
        else if(vddms[i] == "onBdChrgrIAct"){
            notification.onBdChrgrIAct=(uint16_t)(ntohs(values[i]));
        }
        else if(vddms[i] == "onBdChrgrSt"){
            notification.onBdChrgrSt=(uint8_t)values[i];
        }
        else if(vddms[i] == "onBdChrgrUAct"){
            notification.onBdChrgrUAct=(uint16_t)(ntohs(values[i]));
        }
        else if(vddms[i] == "prpsnModElecDrvBlkd"){
            notification.prpsnModElecDrvBlkd=(uint8_t)values[i];
        }
        else if(vddms[i] == "prpsnModOfTracBlkd"){
            notification.prpsnModOfTracBlkd=(uint8_t)values[i];
        }
        else if(vddms[i] == "prpsnModOffroadBlkd"){
            notification.prpsnModOffroadBlkd=(uint8_t)values[i];
        }
        else if(vddms[i] == "prpsnModSptBlkd"){
            notification.prpsnModSptBlkd=(uint8_t)values[i];
        }
        else if(vddms[i] == "ptGearAct"){
            notification.ptGearAct=(uint8_t)values[i];
        }
        else if(vddms[i] == "steerErrReq"){
            notification.steerErrReq=(uint8_t)values[i];
        }
        else if(vddms[i] == "swtStsforHillDwnCtrl"){
            notification.swtStsforHillDwnCtrl=(uint8_t)values[i];
        }
        else if(vddms[i] == "v2XDchaSwtFb1"){
            notification.v2XDchaSwtFb1=(uint8_t)values[i];
        }
        else if(vddms[i] == "v2XDchaSwtFdb"){
            notification.v2XDchaSwtFdb=(uint8_t)values[i];
        }
        else if(vddms[i] == "whlMotSysIdc"){
            notification.whlMotSysIdc=(uint16_t)(ntohs(values[i]));
        }
        else if(vddms[i] == "brkFricTqAtWhlActBrkFricTqAtWhlFrntLeAct"){
            notification.brkFricTqAtWhlActBrkFricTqAtWhlFrntLeAct=(uint16_t)(ntohs(values[i]));
        }
        else if(vddms[i] == "brkFricTqAtWhlActBrkFricTqAtWhlFrntRiAct"){
            notification.brkFricTqAtWhlActBrkFricTqAtWhlFrntRiAct=(uint16_t)(ntohs(values[i]));
        }
        else if(vddms[i] == "brkFricTqAtWhlActBrkFricTqAtWhlReLeAct"){
            notification.brkFricTqAtWhlActBrkFricTqAtWhlReLeAct=(uint16_t)(ntohs(values[i]));
        }
        else if(vddms[i] == "brkFricTqAtWhlActBrkFricTqAtWhlReRiAct"){
            notification.brkFricTqAtWhlActBrkFricTqAtWhlReRiAct=(uint16_t)(ntohs(values[i]));
        }
        else if(vddms[i] == "dchaEgyStrgDchaCarTiGlb"){
            notification.dchaEgyStrgDchaCarTiGlb=(uint32_t)(ntohl(values[i]));
        }
        else if(vddms[i] == "dchaEgyStrgDchaEgy"){
            notification.dchaEgyStrgDchaEgy=(uint16_t)(ntohs(values[i]));
        }
        else if(vddms[i] == "drvrDesDirChks"){
            notification.drvrDesDirChks=(uint8_t)values[i];
        }
        else if(vddms[i] == "drvrDesDirCntr"){
            notification.drvrDesDirCntr=(uint8_t)values[i];
        }
        else if(vddms[i] == "drvrDesDirDrvrDesDir"){
            notification.drvrDesDirDrvrDesDir=(uint8_t)values[i];
        }
        else if(vddms[i] == "escStEscSt"){
            notification.escStEscSt=(uint8_t)values[i];
        }
        else if(vddms[i] == "iDcDcActLoSideChks"){
            notification.iDcDcActLoSideChks=(uint8_t)values[i];
        }
        else if(vddms[i] == "iDcDcActLoSideCntr"){
            notification.iDcDcActLoSideCntr=(uint8_t)values[i];
        }
        else if(vddms[i] == "iDcDcActLoSideIDcDcActLoSide"){
            notification.iDcDcActLoSideIDcDcActLoSide=(uint16_t)(ntohs(values[i]));
        }
        else if(vddms[i] == "pitchAgGlbQf"){
            notification.pitchAgGlbQf=(uint8_t)values[i];
        }
        else if(vddms[i] == "pitchAgGlbVal"){
            notification.pitchAgGlbVal=(int16_t)values[i];
        }
        else if(vddms[i] == "ptTqAtWhlFrntActChks"){
            notification.ptTqAtWhlFrntActChks=(uint8_t)values[i];
        }
        else if(vddms[i] == "ptTqAtWhlFrntActCntr"){
            notification.ptTqAtWhlFrntActCntr=(uint8_t)values[i];
        }
        else if(vddms[i] == "ptTqAtWhlFrntActPtTqAtAxleFrntAct"){
            notification.ptTqAtWhlFrntActPtTqAtAxleFrntAct=(int16_t)values[i];
        }
        else if(vddms[i] == "ptTqAtWhlFrntActPtTqAtWhlFrntLeAct"){
            notification.ptTqAtWhlFrntActPtTqAtWhlFrntLeAct=(int16_t)values[i];
        }
        else if(vddms[i] == "ptTqAtWhlFrntActPtTqAtWhlFrntRiAct"){
            notification.ptTqAtWhlFrntActPtTqAtWhlFrntRiAct=(int16_t)values[i];
        }
        else if(vddms[i] == "ptTqAtWhlFrntActPtTqAtWhlsFrntQly"){
            notification.ptTqAtWhlFrntActPtTqAtWhlsFrntQly=(uint8_t)values[i];
        }
        else if(vddms[i] == "ptTqAtWhlReActChks"){
            notification.ptTqAtWhlReActChks=(uint8_t)values[i];
        }
        else if(vddms[i] == "ptTqAtWhlReActCntr"){
            notification.ptTqAtWhlReActCntr=(uint8_t)values[i];
        }
        else if(vddms[i] == "ptTqAtWhlReActPtTqAtAxleReAct"){
            notification.ptTqAtWhlReActPtTqAtAxleReAct=(int16_t)values[i];
        }
        else if(vddms[i] == "ptTqAtWhlReActPtTqAtWhlReLeAct"){
            notification.ptTqAtWhlReActPtTqAtWhlReLeAct=(int16_t)values[i];
        }
        else if(vddms[i] == "ptTqAtWhlReActPtTqAtWhlReRiAct"){
            notification.ptTqAtWhlReActPtTqAtWhlReRiAct=(int16_t)values[i];
        }
        else if(vddms[i] == "ptTqAtWhlReActPtTqAtWhlsReQly"){
            notification.ptTqAtWhlReActPtTqAtWhlsReQly=(uint8_t)values[i];
        }
        else if(vddms[i] == "roadInclnQly"){
            notification.roadInclnQly=(uint8_t)values[i];
        }
        else if(vddms[i] == "roadInclnRoadIncln"){
            notification.roadInclnRoadIncln=(int16_t)values[i];
        }
        else if(vddms[i] == "rollAgGlbQf"){
            notification.rollAgGlbQf=(uint8_t)values[i];
        }
        else if(vddms[i] == "rollAgGlbVal"){
            notification.rollAgGlbVal=(int16_t)values[i];
        }
        else if(vddms[i] == "slopReducEngCoeffSlopEqu12"){
            notification.slopReducEngCoeffSlopEqu12=(uint8_t)values[i];
        }
        else if(vddms[i] == "slopReducEngCoeffSlopEqu2"){
            notification.slopReducEngCoeffSlopEqu2=(uint8_t)values[i];
        }
        else if(vddms[i] == "slopReducEngCoeffSlopEqu4"){
            notification.slopReducEngCoeffSlopEqu4=(uint8_t)values[i];
        }
        else if(vddms[i] == "slopReducEngCoeffSlopEqu6"){
            notification.slopReducEngCoeffSlopEqu6=(uint8_t)values[i];
        }
        else if(vddms[i] == "slopReducEngCoeffSlopEqu9"){
            notification.slopReducEngCoeffSlopEqu9=(uint8_t)values[i];
        }
        else if(vddms[i] == "slopRiseEngCoeffSlopEqu12"){
            notification.slopRiseEngCoeffSlopEqu12=(uint8_t)values[i];
        }
        else if(vddms[i] == "slopRiseEngCoeffSlopEqu2"){
            notification.slopRiseEngCoeffSlopEqu2=(uint8_t)values[i];
        }
        else if(vddms[i] == "slopRiseEngCoeffSlopEqu4"){
            notification.slopRiseEngCoeffSlopEqu4=(uint8_t)values[i];
        }
        else if(vddms[i] == "slopRiseEngCoeffSlopEqu6"){
            notification.slopRiseEngCoeffSlopEqu6=(uint8_t)values[i];
        }
        else if(vddms[i] == "slopRiseEngCoeffSlopEqu9"){
            notification.slopRiseEngCoeffSlopEqu9=(uint8_t)values[i];
        }
        else if(vddms[i] == "spdRelatWghtSpdEqu10"){
            notification.spdRelatWghtSpdEqu10=(uint8_t)values[i];
        }
        else if(vddms[i] == "spdRelatWghtSpdEqu100"){
            notification.spdRelatWghtSpdEqu100=(uint8_t)values[i];
        }
        else if(vddms[i] == "spdRelatWghtSpdEqu120"){
            notification.spdRelatWghtSpdEqu120=(uint8_t)values[i];
        }
        else if(vddms[i] == "spdRelatWghtSpdEqu140"){
            notification.spdRelatWghtSpdEqu140=(uint8_t)values[i];
        }
        else if(vddms[i] == "spdRelatWghtSpdEqu20"){
            notification.spdRelatWghtSpdEqu20=(uint8_t)values[i];
        }
        else if(vddms[i] == "spdRelatWghtSpdEqu40"){
            notification.spdRelatWghtSpdEqu40=(uint8_t)values[i];
        }
        else if(vddms[i] == "spdRelatWghtSpdEqu60"){
            notification.spdRelatWghtSpdEqu60=(uint8_t)values[i];
        }
        else if(vddms[i] == "spdRelatWghtSpdEqu80"){
            notification.spdRelatWghtSpdEqu80=(uint8_t)values[i];
        }
        else if(vddms[i] == "steerWhlSnsrAg"){
            notification.steerWhlSnsrAg=(int16_t)values[i];
        }
        else if(vddms[i] == "steerWhlSnsrAgSpd"){
            notification.steerWhlSnsrAgSpd=(int16_t)values[i];
        }
        else if(vddms[i] == "steerWhlSnsrChks"){
            notification.steerWhlSnsrChks=(uint8_t)values[i];
        }
        else if(vddms[i] == "steerWhlSnsrCntr"){
            notification.steerWhlSnsrCntr=(uint8_t)values[i];
        }
        else if(vddms[i] == "steerWhlSnsrQf"){
            notification.steerWhlSnsrQf=(uint8_t)values[i];
        }
        else if(vddms[i] == "suspFailrStsChks"){
            notification.suspFailrStsChks=(uint8_t)values[i];
        }
        else if(vddms[i] == "suspFailrStsCntr"){
            notification.suspFailrStsCntr=(uint8_t)values[i];
        }
        else if(vddms[i] == "suspFailrStsSuspFailrSts"){
            notification.suspFailrStsSuspFailrSts=(uint8_t)values[i];
        }
        else if(vddms[i] == "suspFailrStsTypQf"){
            notification.suspFailrStsTypQf=(uint8_t)values[i];
        }
        else if(vddms[i] == "suspPosnVertLe1Chks"){
            notification.suspPosnVertLe1Chks=(uint8_t)values[i];
        }
        else if(vddms[i] == "suspPosnVertLe1Frnt"){
            notification.suspPosnVertLe1Frnt=(int16_t)values[i];
        }
        else if(vddms[i] == "suspPosnVertLe1FrntQf"){
            notification.suspPosnVertLe1FrntQf=(uint8_t)values[i];
        }
        else if(vddms[i] == "suspPosnVertLe1Re"){
            notification.suspPosnVertLe1Re=(int16_t)values[i];
        }
        else if(vddms[i] == "suspPosnVertLe1ReQf"){
            notification.suspPosnVertLe1ReQf=(uint8_t)values[i];
        }
        else if(vddms[i] == "suspPosnVertRi1SuspPosnVertRiChks"){
            notification.suspPosnVertRi1SuspPosnVertRiChks=(uint8_t)values[i];
        }
        else if(vddms[i] == "suspPosnVertRi1SuspPosnVertRiFrnt"){
            notification.suspPosnVertRi1SuspPosnVertRiFrnt=(int16_t)values[i];
        }
        else if(vddms[i] == "suspPosnVertRi1SuspPosnVertRiFrntQf"){
            notification.suspPosnVertRi1SuspPosnVertRiFrntQf=(uint8_t)values[i];
        }
        else if(vddms[i] == "suspPosnVertRi1SuspPosnVertRiRe"){
            notification.suspPosnVertRi1SuspPosnVertRiRe=(int16_t)values[i];
        }
        else if(vddms[i] == "suspPosnVertRi1SuspPosnVertRiReQf"){
            notification.suspPosnVertRi1SuspPosnVertRiReQf=(uint8_t)values[i];
        }
        else if(vddms[i] == "vehMNomTrlrM"){
            notification.vehMNomTrlrM=(uint8_t)values[i];
        }
        else if(vddms[i] == "vehMNomVehM"){
            notification.vehMNomVehM=(uint16_t)(ntohs(values[i]));
        }
        else if(vddms[i] == "vehMNomVehMQly"){
            notification.vehMNomVehMQly=(uint8_t)values[i];
        }
        else if(vddms[i] == "hvBattEgyAvlDcha1"){
            notification.hvBattEgyAvlDcha1=(uint16_t)(htons(values[i]));
        }
        else if(vddms[i] == "vehMtnStChks"){
            notification.vehMtnStChks=(uint8_t)values[i];
        }
        else if(vddms[i] == "vehMtnStCntr"){
            notification.vehMtnStCntr=(uint8_t)values[i];
        }
        else if(vddms[i] == "vehSpdLgtA"){
            notification.vehSpdLgtA=(uint16_t)(ntohs(values[i]));
        }
        else if(vddms[i] == "vehSpdLgtChks"){
            notification.vehSpdLgtChks=(uint8_t)values[i];
        }
        else if(vddms[i] == "vehSpdLgtCntr"){
            notification.vehSpdLgtCntr=(uint8_t)values[i];
        }
        else if(vddms[i] == "vehSpdLgtQf"){
            notification.vehSpdLgtQf=(uint8_t)values[i];
        }
        else if(vddms[i] == "whlRotToothCntrChks"){
            notification.whlRotToothCntrChks=(uint8_t)values[i];
        }
        else if(vddms[i] == "whlRotToothCntrCntr"){
            notification.whlRotToothCntrCntr=(uint8_t)values[i];
        }
        else if(vddms[i] == "whlRotToothCntrFrntLe"){
            notification.whlRotToothCntrFrntLe=(uint8_t)values[i];
        }
        else if(vddms[i] == "whlRotToothCntrFrntRi"){
            notification.whlRotToothCntrFrntRi=(uint8_t)values[i];
        }
        else if(vddms[i] == "whlRotToothCntrReLe"){
            notification.whlRotToothCntrReLe=(uint8_t)values[i];
        }
        else if(vddms[i] == "whlRotToothCntrReRi"){
            notification.whlRotToothCntrReRi=(uint8_t)values[i];
        }
        else if(vddms[i] == "whlSpdCircumlFrntChks"){
            notification.whlSpdCircumlFrntChks=(uint8_t)values[i];
        }
        else if(vddms[i] == "whlSpdCircumlFrntCntr"){
            notification.whlSpdCircumlFrntCntr=(uint8_t)values[i];
        }
        else if(vddms[i] == "whlSpdCircumlFrntLe"){
            notification.whlSpdCircumlFrntLe=(uint16_t)(ntohs(values[i]));
        }
        else if(vddms[i] == "whlSpdCircumlFrntLeQf"){
            notification.whlSpdCircumlFrntLeQf=(uint8_t)values[i];
        }
        else if(vddms[i] == "whlSpdCircumlFrntRiQf"){
            notification.whlSpdCircumlFrntRiQf=(uint8_t)values[i];
        }
        else if(vddms[i] == "whlSpdCircumlFrntWhlSpdCircumlFrntRi"){
            notification.whlSpdCircumlFrntWhlSpdCircumlFrntRi=(uint16_t)(ntohs(values[i]));
        }
        else if(vddms[i] == "whlSpdCircumlReChks"){
            notification.whlSpdCircumlReChks=(uint8_t)values[i];
        }
        else if(vddms[i] == "whlSpdCircumlReCntr"){
            notification.whlSpdCircumlReCntr=(uint8_t)values[i];
        }
        else if(vddms[i] == "whlSpdCircumlReLe"){
            notification.whlSpdCircumlReLe=(uint16_t)(ntohs(values[i]));
        }
        else if(vddms[i] == "whlSpdCircumlReLeQf"){
            notification.whlSpdCircumlReLeQf=(uint8_t)values[i];
        }
        else if(vddms[i] == "whlSpdCircumlReRi"){
            notification.whlSpdCircumlReRi=(uint16_t)(ntohs(values[i]));
        }
        else if(vddms[i] == "whlSpdCircumlReRiQf"){
            notification.whlSpdCircumlReRiQf=(uint8_t)values[i];
        }
        else if(vddms[i] == "hvSysRlyStsHvSysRlySts"){
            notification.hvSysRlyStsHvSysRlySts=(uint8_t)values[i];
        }
        else if(vddms[i] == "chgPreSetTempButtonInhibit"){
            notification.chgPreSetTempButtonInhibit=(uint8_t)values[i];
        }
        else if(vddms[i] == "chgPreSetTempButtonFb"){
            notification.chgPreSetTempButtonFb=(uint8_t)values[i];
        }
        else if(vddms[i] == "hvBattTempSts"){
            notification.hvBattTempSts=(uint8_t)values[i];
        }
        else if(vddms[i] == "hvBattOptmzHint"){
            notification.hvBattOptmzHint=(uint8_t)values[i];
        }
        else if(vddms[i] == "brkPedlPsdBrkPedlPsd"){
            notification.brkPedlPsdBrkPedlPsd=(uint8_t)values[i];
        }
        else if(vddms[i]=="totEngCons1"){
            notification.totEngCons1=(uint32_t)(htonl(values[i]));
        }
        else if(vddms[i]=="totEngCons2"){
            notification.totEngCons2=(uint32_t)(htonl(values[i]));
        }
        else if(vddms[i]=="totEngCons3"){
            notification.totEngCons3=(uint32_t)(htonl(values[i]));
        }
        else if(vddms[i]=="dynEgyCons1"){
            notification.dynEgyCons1=(uint32_t)(htonl(values[i]));
        }
        else if(vddms[i]=="dynEgyCons2"){
            notification.dynEgyCons2=(uint32_t)(htonl(values[i]));
        }
        else if(vddms[i]=="dynEgyCons3"){
            notification.dynEgyCons3=(uint32_t)(htonl(values[i]));
        }
        else if(vddms[i]=="motSysPowCnsUIdc1"){
            notification.motSysPowCnsUIdc1=(uint32_t)(htonl(values[i]));
        }
        else if(vddms[i]=="motSysPowCnsUIdc2"){
            notification.motSysPowCnsUIdc2=(uint32_t)(htonl(values[i]));
        }
        else if(vddms[i]=="motSysPowCnsUIdc3"){
            notification.motSysPowCnsUIdc3=(uint32_t)(htonl(values[i]));
        }
        else if(vddms[i]=="hvCabinThermPwrCns1"){
            notification.hvCabinThermPwrCns1=(uint32_t)(htonl(values[i]));
        }
        else if(vddms[i]=="hvCabinThermPwrCns2"){
            notification.hvCabinThermPwrCns2=(uint32_t)(htonl(values[i]));
        }
        else if(vddms[i]=="hvCabinThermPwrCns3"){
            notification.hvCabinThermPwrCns3=(uint32_t)(htonl(values[i]));
        }
        else if(vddms[i]=="hVBatteryThermPwrCns1"){
            notification.hVBatteryThermPwrCns1=(uint32_t)(htonl(values[i]));
        }
        else if(vddms[i]=="hVBatteryThermPwrCns2"){
            notification.hVBatteryThermPwrCns2=(uint32_t)(htonl(values[i]));
        }
        else if(vddms[i]=="hVBatteryThermPwrCns3"){
            notification.hVBatteryThermPwrCns3=(uint32_t)(htonl(values[i]));
        }
        else if(vddms[i]=="dCDCPwrCns1"){
            notification.dCDCPwrCns1=(uint32_t)(htonl(values[i]));
        }
        else if(vddms[i]=="dCDCPwrCns2"){
            notification.dCDCPwrCns2=(uint32_t)(htonl(values[i]));
        }
        else if(vddms[i]=="dCDCPwrCns3"){
            notification.dCDCPwrCns3=(uint32_t)(htonl(values[i]));
        }
        else if(vddms[i]=="v2XPwrCns1"){
            notification.v2XPwrCns1=(uint32_t)(htonl(values[i]));
        }
        else if(vddms[i]=="v2XPwrCns2"){
            notification.v2XPwrCns2=(uint32_t)(htonl(values[i]));
        }
        else if(vddms[i]=="v2XPwrCns3"){
            notification.v2XPwrCns3=(uint32_t)(htonl(values[i]));
        }else if(vddms[i]=="thermalSystemRedn"){
            notification.thermalSystemRedn=(uint8_t)values[i];
        }
    }
    memcpy(buffer, &notification, sizeof(_OpVDDM_Notification));
    bool res = send_message(ser_id, operation_id, buffer, sizeof(_OpVDDM_Notification));
    return res;
}

bool set_asdm_signal(int ser_id, int operation_id, std::string arrs[], int values[], int len) {
    uint8_t buffer[MAX_PAYLOAD] = {0};
    _OpASDM_Notification notification;
    memset(&notification, 0, sizeof(notification));
    for (int i = 0; i < len; i++) {
        if (strcmp(arrs[i].c_str(), "asyALatIndcr") == 0){
            notification.asyALatIndcr = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "asyALgtIndcr") == 0){
            notification.asyALgtIndcr = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "asyAutDrvgAvl") == 0){
            notification.asyAutDrvgAvl = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "asyEmgyLaneKeepAid") == 0){
            notification.asyEmgyLaneKeepAid = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "asyEmgyLaneKeepAidSts") == 0){
            notification.asyEmgyLaneKeepAidSts = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "asyEmgyLaneSts") == 0){
            notification.asyEmgyLaneSts = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "asyEmgyManoeuvreAidSts") == 0){
            notification.asyEmgyManoeuvreAidSts = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "asyLaneChgWarnMod") == 0){
            notification.asyLaneChgWarnMod = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "asyLaneKeepAidSts") == 0){
            notification.asyLaneKeepAidSts = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "asyLineLeColor") == 0){
            notification.asyLineLeColor = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "asyLineRiColor") == 0){
            notification.asyLineRiColor = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "asySteerApplyRqrd") == 0){
            notification.asySteerApplyRqrd = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "cllsnAidPost") == 0){
            notification.cllsnAidPost = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "cllsnFwdWarn") == 0){
            notification.cllsnFwdWarn = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "cllsnMtgtnFctSts") == 0){
            notification.cllsnMtgtnFctSts = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "cllsnMtgtnOnoffSts") == 0){
            notification.cllsnMtgtnOnoffSts = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "cllsnMtgtnWarnSts") == 0){
            notification.cllsnMtgtnWarnSts = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "cllsnWarnReOn1") == 0){
            notification.cllsnWarnReOn1 = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "cnclFaceRes") == 0){
            notification.cnclFaceRes = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "cnclWarnForAutDrv") == 0){
            notification.cnclWarnForAutDrv = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "ctraOn1") == 0){
            notification.ctraOn1 = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "doorOpenwarnOn1") == 0){
            notification.doorOpenwarnOn1 = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "drvrAsscSysDisp") == 0){
            notification.drvrAsscSysDisp = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "drvrAsscSysSts") == 0){
            notification.drvrAsscSysSts = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "drvrPfmncSwitchSts") == 0){
            notification.drvrPfmncSwitchSts = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "faceIdnStsMsg") == 0){
            notification.faceIdnStsMsg = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "faceInfoAcqRes") == 0){
            notification.faceInfoAcqRes = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "faceInfoAcqSts") == 0){
            notification.faceInfoAcqSts = (uint16_t)(ntohs(values[i]));
        }
        else if (strcmp(arrs[i].c_str(), "frntLeOfSnsrOfPrkgAssiSide") == 0){
            notification.frntLeOfSnsrOfPrkgAssiSide = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "frntRiOfSnsrOfPrkgAssiSide") == 0){
            notification.frntRiOfSnsrOfPrkgAssiSide = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "insdLeOfSnsrPrkgAssiFrnt") == 0){
            notification.insdLeOfSnsrPrkgAssiFrnt = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "insdLeOfSnsrPrkgAssiRe") == 0){
            notification.insdLeOfSnsrPrkgAssiRe = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "insdRiOfSnsrPrkgAssiFrnt") == 0){
            notification.insdRiOfSnsrPrkgAssiFrnt = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "insdRiOfSnsrPrkgAssiRe") == 0){
            notification.insdRiOfSnsrPrkgAssiRe = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "intvAndWarnModInfoSts") == 0){
            notification.intvAndWarnModInfoSts = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "laneChgAutStsForAsyHiWay") == 0){
            notification.laneChgAutStsForAsyHiWay = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "laneChgWarnSts") == 0){
            notification.laneChgWarnSts = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "laneKeepAidInfoSts") == 0){
            notification.laneKeepAidInfoSts = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "lcmaAudWarn") == 0){
            notification.lcmaAudWarn = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "lcmaOn") == 0){
            notification.lcmaOn = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "navForDrvrPfmncSts") == 0){
            notification.navForDrvrPfmncSts = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "objOnIfOfSnsr") == 0){
            notification.objOnIfOfSnsr = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "outdLeOfSnsrPrkgAssiFrnt") == 0){
            notification.outdLeOfSnsrPrkgAssiFrnt = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "outdLeOfSnsrPrkgAssiRe") == 0){
            notification.outdLeOfSnsrPrkgAssiRe = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "outdRiOfSnsrPrkgAssiFrnt") == 0){
            notification.outdRiOfSnsrPrkgAssiFrnt = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "outdRiOfSnsrPrkgAssiRe") == 0){
            notification.outdRiOfSnsrPrkgAssiRe = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "pdcMuteBtnSts") == 0){
            notification.pdcMuteBtnSts = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "prkgDstCtrlSts") == 0){
            notification.prkgDstCtrlSts = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "prkgEmgyBrkSysSts") == 0){
            notification.prkgEmgyBrkSysSts = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "prkgProgsDisp") == 0){
            notification.prkgProgsDisp = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "prkgTypAutBtnCfmd") == 0){
            notification.prkgTypAutBtnCfmd = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "rctaIndcnLe") == 0){
            notification.rctaIndcnLe = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "rctaIndcnRi") == 0){
            notification.rctaIndcnRi = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "reLeOfSnsrOfPrkgAssiSide") == 0){
            notification.reLeOfSnsrOfPrkgAssiSide = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "reRiOfSnsrOfPrkgAssiSide") == 0){
            notification.reRiOfSnsrOfPrkgAssiSide = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "roadSgnInfoSts") == 0){
            notification.roadSgnInfoSts = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "snsrDrvrPfmncSts") == 0){
            notification.snsrDrvrPfmncSts = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "snsrFltOfPrkgDstCtrl") == 0){
            notification.snsrFltOfPrkgDstCtrl = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "softBtnSwtStCfmd") == 0){
            notification.softBtnSwtStCfmd = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "trfcLiSts") == 0){
            notification.trfcLiSts = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "visAlrmReq") == 0){
            notification.visAlrmReq = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "asyALgtStsAsyALgtSts") == 0){
            notification.asyALgtStsAsyALgtSts = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "asyALgtStsChks") == 0){
            notification.asyALgtStsChks = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "asyALgtStsCntr") == 0){
            notification.asyALgtStsCntr = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "eyeGazeZone") == 0){
            notification.eyeGazeZone = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "eyeGazeZoneTime") == 0){
            notification.eyeGazeZoneTime = (uint16_t)(ntohs(values[i]));
        }
        else if (strcmp(arrs[i].c_str(), "faceIdnResForProfIdPen") == 0){
            notification.faceIdnResForProfIdPen = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "faceIdnResForProfYesNo") == 0){
            notification.faceIdnResForProfYesNo = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "faceRecgGidInfo1Byte0") == 0){
            notification.faceRecgGidInfo1Byte0 = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "faceRecgGidInfo1Byte1") == 0){
            notification.faceRecgGidInfo1Byte1 = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "faceRecgGidInfo1Byte2") == 0){
            notification.faceRecgGidInfo1Byte2 = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "faceRecgGidInfo1Byte3") == 0){
            notification.faceRecgGidInfo1Byte3 = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "faceRecgGidInfo1Byte4") == 0){
            notification.faceRecgGidInfo1Byte4 = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "faceRecgGidInfo1Byte5") == 0){
            notification.faceRecgGidInfo1Byte5 = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "faceRecgGidInfo1Byte6") == 0){
            notification.faceRecgGidInfo1Byte6 = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "faceRecgGidInfo1Byte7") == 0){
            notification.faceRecgGidInfo1Byte7 = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "faceRecgGidInfo2Byte0") == 0){
            notification.faceRecgGidInfo2Byte0 = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "faceRecgGidInfo2Byte1") == 0){
            notification.faceRecgGidInfo2Byte1 = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "faceRecgGidInfo2Byte2") == 0){
            notification.faceRecgGidInfo2Byte2 = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "faceRecgGidInfo2Byte3") == 0){
            notification.faceRecgGidInfo2Byte3 = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "faceRecgGidInfo2Byte4") == 0){
            notification.faceRecgGidInfo2Byte4 = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "faceRecgGidInfo2Byte5") == 0){
            notification.faceRecgGidInfo2Byte5 = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "faceRecgGidInfo2Byte6") == 0){
            notification.faceRecgGidInfo2Byte6 = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "faceRecgGidInfo2Byte7") == 0){
            notification.faceRecgGidInfo2Byte7 = (uint8_t)values[i];
        }
        else if (strcmp(arrs[i].c_str(), "asyHandsOffIndcrAsyHandsOffIndcr") == 0) {
            notification.asyHandsOffIndcrAsyHandsOffIndcr = (uint8_t)values[i];
        }else if (strcmp(arrs[i].c_str(), "drvrPfmncAlrmReq") == 0){
            notification.drvrPfmncAlrmReq = (uint8_t)values[i];
        }
    }
    memcpy(buffer, &notification, sizeof(_OpASDM_Notification));
    bool res = send_message(ser_id, operation_id, buffer, sizeof(_OpASDM_Notification));
    return res;
}

bool set_dmsm_signal(int ser_id, int operation_id, std::string array[], int values[], int len) {

    return false;
}

bool set_cdm_signal(int ser_id, int operation_id, std::string cdms[], int values[], int len) {
    uint8_t buffer[MAX_PAYLOAD] = {0};
    _OpCDM_Notification notification;
    memset(&notification, 0, sizeof(notification));
    for (int i = 0; i < len; i++) {
        if(cdms[i]=="drvrSeatExtAdjAllowd"){
            notification.drvrSeatExtAdjAllowd=(uint8_t)values[i];
        }
        else if(cdms[i]=="passSeatActvSpplFct"){
            notification.passSeatActvSpplFct=(uint8_t)values[i];
        }
        else if(cdms[i]=="seatBackAngleRowFirstDrvr"){
            notification.seatBackAngleRowFirstDrvr=(uint8_t)values[i];
        }
        else if(cdms[i]=="seatBackAngleRowFirstPass"){
            notification.seatBackAngleRowFirstPass=(uint8_t)values[i];
        }
        else if(cdms[i]=="sunCurtMvngSts"){
            notification.sunCurtMvngSts=(uint8_t)values[i];
        }
        else if(cdms[i]=="sunCurtPosnSts"){
            notification.sunCurtPosnSts=(uint8_t)values[i];
        }
        else if(cdms[i]=="drvrSeatSwtStsDrvrSeatSwtAdjmtOfSpplFctHozlSts"){
            notification.drvrSeatSwtStsDrvrSeatSwtAdjmtOfSpplFctHozlSts=(uint8_t)values[i];
        }
        else if(cdms[i]=="drvrSeatSwtStsDrvrSeatSwtAdjmtOfSpplFctVertSts"){
            notification.drvrSeatSwtStsDrvrSeatSwtAdjmtOfSpplFctVertSts=(uint8_t)values[i];
        }
        else if(cdms[i]=="drvrSeatSwtStsDrvrSeatSwtHdrstHozlSts"){
            notification.drvrSeatSwtStsDrvrSeatSwtHdrstHozlSts=(uint8_t)values[i];
        }
        else if(cdms[i]=="drvrSeatSwtStsDrvrSeatSwtHdrstVertSts"){
            notification.drvrSeatSwtStsDrvrSeatSwtHdrstVertSts=(uint8_t)values[i];
        }
        else if(cdms[i]=="drvrSeatSwtStsDrvrSeatSwtHeiFrntSts"){
            notification.drvrSeatSwtStsDrvrSeatSwtHeiFrntSts=(uint8_t)values[i];
        }
        else if(cdms[i]=="drvrSeatSwtStsDrvrSeatSwtHeiSts"){
            notification.drvrSeatSwtStsDrvrSeatSwtHeiSts=(uint8_t)values[i];
        }
        else if(cdms[i]=="drvrSeatSwtStsDrvrSeatSwtInclSts"){
            notification.drvrSeatSwtStsDrvrSeatSwtInclSts=(uint8_t)values[i];
        }
        else if(cdms[i]=="drvrSeatSwtStsDrvrSeatSwtSelnOfSpplFctSts"){
            notification.drvrSeatSwtStsDrvrSeatSwtSelnOfSpplFctSts=(uint8_t)values[i];
        }
        else if(cdms[i]=="drvrSeatSwtStsDrvrSeatSwtSldSts"){
            notification.drvrSeatSwtStsDrvrSeatSwtSldSts=(uint8_t)values[i];
        }
        else if(cdms[i]=="passSeatSwtSts2PassSeatSwtHdrstVertSts"){
            notification.passSeatSwtSts2PassSeatSwtHdrstVertSts=(uint8_t)values[i];
        }
        else if(cdms[i]=="passSeatSwtSts2PassSeatSwtHeiFrntSts"){
            notification.passSeatSwtSts2PassSeatSwtHeiFrntSts=(uint8_t)values[i];
        }
        else if(cdms[i]=="passSeatSwtSts2PassSeatSwtHeiSts"){
            notification.passSeatSwtSts2PassSeatSwtHeiSts=(uint8_t)values[i];
        }
        else if(cdms[i]=="passSeatSwtSts2PassSeatSwtAdjmtOfSpplFctHozlSts"){
            notification.passSeatSwtSts2PassSeatSwtAdjmtOfSpplFctHozlSts=(uint8_t)values[i];
        }
        else if(cdms[i]=="passSeatSwtSts2PassSeatSwtAdjmtOfSpplFctVerSts"){
            notification.passSeatSwtSts2PassSeatSwtAdjmtOfSpplFctVerSts=(uint8_t)values[i];
        }
        else if(cdms[i]=="passSeatSwtSts2PassSeatSwtHdrstHozlSts"){
            notification.passSeatSwtSts2PassSeatSwtHdrstHozlSts=(uint8_t)values[i];
        }
        else if(cdms[i]=="passSeatSwtSts2PassSeatSwtInclSts"){
            notification.passSeatSwtSts2PassSeatSwtInclSts=(uint8_t)values[i];
        }
        else if(cdms[i]=="passSeatSwtSts2PassSeatSwtSelnOfSpplFctStsSts"){
            notification.passSeatSwtSts2PassSeatSwtSelnOfSpplFctStsSts=(uint8_t)values[i];
        }
        else if(cdms[i]=="passSeatSwtSts2PassSeatSwtSldSts"){
            notification.passSeatSwtSts2PassSeatSwtSldSts=(uint8_t)values[i];
        }
        else if(cdms[i]=="tiAndDateIndcnDataValid"){
//            notification.tiAndDateIndcnDataValid=(uint8_t)values[i];
        }
        else if(cdms[i]=="tiAndDateIndcnDay"){
//            notification.tiAndDateIndcnDay=(uint8_t)values[i];
        }
        else if(cdms[i]=="tiAndDateIndcnHr1"){
//            notification.tiAndDateIndcnHr1=(uint8_t)values[i];
        }
        else if(cdms[i]=="tiAndDateIndcnMins1"){
//            notification.tiAndDateIndcnMins1=(uint8_t)values[i];
        }
        else if(cdms[i]=="tiAndDateIndcnMth1"){
//            notification.tiAndDateIndcnMth1=(uint8_t)values[i];
        }
        else if(cdms[i]=="tiAndDateIndcnSec1"){
//            notification.tiAndDateIndcnSec1=(uint8_t)values[i];
        }
        else if(cdms[i]=="tiAndDateIndcnYr1"){
//            notification.tiAndDateIndcnYr1=(uint8_t)values[i];
        }
        else if(cdms[i]=="drvrSeatBtnPsd"){
            notification.drvrSeatBtnPsd=(uint8_t)values[i];
        }
        else if(cdms[i]=="drvrSeatPosPercSeatPosSldPerc"){
            notification.drvrSeatPosPercSeatPosSldPerc=(uint16_t)(ntohs(values[i]));
        }
        else if(cdms[i]=="passSeatBtnPsd"){
            notification.passSeatBtnPsd=(uint8_t)values[i];
        }
        else if(cdms[i]=="passSeatPosPercSeatPosSldPerc"){
            notification.passSeatPosPercSeatPosSldPerc=(uint16_t)(ntohs(values[i]));
        }
        else if(cdms[i]=="passSeatPosPercSeatPosSldQF"){
            notification.passSeatPosPercSeatPosSldQF=(uint8_t)values[i];
        }
        else if(cdms[i]=="passSeatPosPercSeatPosFrntHeiPerc"){
            notification.passSeatPosPercSeatPosFrntHeiPerc=(uint16_t)(ntohs(values[i]));
        }
        else if(cdms[i]=="passSeatPosPercSeatPosFrntHeiQF"){
            notification.passSeatPosPercSeatPosFrntHeiQF=(uint8_t)values[i];
        }
        else if(cdms[i]=="passSeatPosPercSeatPosHeiPerc"){
            notification.passSeatPosPercSeatPosHeiPerc=(uint16_t)(ntohs(values[i]));
        }
        else if(cdms[i]=="passSeatPosPercSeatPosHeiQF"){
            notification.passSeatPosPercSeatPosHeiQF=(uint8_t)values[i];
        }
        else if(cdms[i]=="drvrSeatPosPercSeatPosFrntHeiPerc"){
            notification.drvrSeatPosPercSeatPosFrntHeiPerc=(uint16_t)(ntohs(values[i]));
        }
        else if(cdms[i]=="drvrSeatPosPercSeatPosFrntHeiQF"){
            notification.drvrSeatPosPercSeatPosFrntHeiQF=(uint8_t)values[i];
        }
        else if(cdms[i]=="drvrSeatPosPercSeatPosHeiPerc"){
            notification.drvrSeatPosPercSeatPosHeiPerc=(uint16_t)(ntohs(values[i]));
        }
        else if(cdms[i]=="drvrSeatPosPercSeatPosHeiQF"){
            notification.drvrSeatPosPercSeatPosHeiQF=(uint8_t)values[i];
        }
        else if(cdms[i]=="drvrSeatPosPercSeatPosSldQF"){
            notification.drvrSeatPosPercSeatPosSldQF=(uint8_t)values[i];
        }
        else if(cdms[i]=="drvrSeatSwtBlstrSts"){
            notification.drvrSeatSwtBlstrSts=(uint8_t)values[i];
        }
        else if(cdms[i]=="passSeatSwtBlstrSts"){
            notification.passSeatSwtBlstrSts=(uint8_t)values[i];
        }
        else if(cdms[i]=="passSeatLegRstHeiPosPercSeatPosPerc"){
            notification.passSeatLegRstHeiPosPercSeatPosPerc=(uint16_t)(ntohs(values[i]));
        }
        else if(cdms[i]=="passSeatLegRstHeiPosPercSeatPosQf"){
            notification.passSeatLegRstHeiPosPercSeatPosQf=(uint8_t)values[i];
        }
        else if(cdms[i]=="passSeatLegRstLenPosPercSeatPosPerc"){
            notification.passSeatLegRstLenPosPercSeatPosPerc=(uint16_t)(ntohs(values[i]));
        }
        else if(cdms[i]=="passSeatLegRstLenPosPercSeatPosQf"){
            notification.passSeatLegRstLenPosPercSeatPosQf=(uint8_t)values[i];
        }
        else if(cdms[i]=="autMoveDispToHmi"){
            notification.autMoveDispToHmi=(uint8_t)values[i];
        }
        else if(cdms[i]=="wiprInPosnForSrv"){
            notification.wiprInPosnForSrv=(uint8_t)values[i];
        }
        else if(cdms[i]=="wiprReInPosnForSrv"){
            notification.wiprReInPosnForSrv=(uint8_t)values[i];
        }
        else if(cdms[i]=="aRFootKickTrSetgSts") {
            notification.aRFootKickTrSetgSts = (uint8_t) values[i];
        }
        else if(cdms[i]=="drvrMassgRunng"){
            notification.drvrMassgRunng=(uint8_t)values[i];
        }
        else if(cdms[i]=="passMassgRunng"){
            notification.passMassgRunng=(uint8_t)values[i];
        }
        else if(cdms[i]=="carTiGlb"){
            notification.carTiGlb=(uint32_t)(ntohl(values[i]));
        }
        else if(cdms[i]=="swtExtrLi3LiExtFctReq1"){
            notification.swtExtrLi3LiExtFctReq1=(uint8_t)values[i];
        }
        else if(cdms[i]=="mirrFoldStsAtDrvr"){
            notification.mirrFoldStsAtDrvr=(uint8_t)values[i];
        }
        else if(cdms[i]=="mirrFoldStsAtPass"){
            notification.mirrFoldStsAtPass=(uint8_t)values[i];
        }
        else if(cdms[i] == "drvrSeatBtnPsd"){
            notification.drvrSeatBtnPsd=(uint8_t)values[i];
        }
        else if(cdms[i] == "passSeatBtnPsd"){
            notification.passSeatBtnPsd=(uint8_t)values[i];
        }
        else if(cdms[i] == "rowSecLeBtnPsd"){
            notification.rowSecLeBtnPsd=(uint8_t)values[i];
        }
        else if(cdms[i] == "rowSecRiBtnPsd"){
            notification.rowSecRiBtnPsd=(uint8_t)values[i];
        }
        else if(cdms[i] == "rowSecLeInclPosAngle"){
            notification.rowSecLeInclPosAngle=(uint8_t)values[i];
        }
        else if(cdms[i] == "rowSecRiInclPosAngle"){
            notification.rowSecRiInclPosAngle=(uint8_t)values[i];
        }
        else if(cdms[i] == "seatRowSecLeSwtStsPassSeatSwtInclSts"){
            notification.seatRowSecLeSwtStsPassSeatSwtInclSts=(uint8_t)values[i];
        }
        else if(cdms[i] == "seatRowSecRiSwtStsPassSeatSwtInclSts"){
            notification.seatRowSecRiSwtStsPassSeatSwtInclSts=(uint8_t)values[i];
        }
        else if(cdms[i] == "rowSecLeLegRstLenPosPercSeatPosQf"){
            notification.rowSecLeLegRstLenPosPercSeatPosQf=(uint8_t)values[i];
        }
        /*else if(cdms[i] == "RowSecRiLegRstLenPosPercSeatPosQf"){
            notification.RowSecRiLegRstLenPosPercSeatPosQf=(uint8_t)values[i];
        }*/
        else if(cdms[i] == "seatRowSecLeSwtStsPassSeatSwtSldSts"){
            notification.seatRowSecLeSwtStsPassSeatSwtSldSts=(uint8_t)values[i];
        }
        else if(cdms[i] == "seatRowSecRiSwtStsPassSeatSwtSldSts"){
            notification.seatRowSecRiSwtStsPassSeatSwtSldSts=(uint8_t)values[i];
        }
        else if(cdms[i] == "rowSecLeSldPosPercSeatPosPerc"){
            notification.rowSecLeSldPosPercSeatPosPerc=(uint8_t)values[i];
        }
        else if(cdms[i] == "rowSecRiSldPosPercSeatPosPerc"){
            notification.rowSecRiSldPosPercSeatPosPerc=(uint8_t)values[i];
        }
        else if(cdms[i] == "rowSecLeSldPosPercSeatPosQf"){
            notification.rowSecLeSldPosPercSeatPosQf=(uint8_t)values[i];
        }
        else if(cdms[i] == "rowSecRiSldPosPercSeatPosQf"){
            notification.rowSecRiSldPosPercSeatPosQf=(uint8_t)values[i];
        }
        else if(cdms[i] == "DiagcExtCom") {
            notification.diagcExtCom=(uint8_t)values[i];
        }
    }
    memcpy(buffer, &notification, sizeof(_OpCDM_Notification));
    bool res = send_message(ser_id, operation_id, buffer, sizeof(_OpCDM_Notification));
    return res;
}

bool set_pdcm_signal(int ser_id, int operation_id, std::string arrs[], int values[], int len) {
    LOGE("%s  hy11\n", __func__);
    return false;
}
bool set_hud_signal(int ser_id, int operation_id, std::string huds[], int values[], int len) {
    LOGE("%s  hy11\n", __func__);
    return false;
}

bool set_dim_hud_signal(int ser_id, int operation_id, std::string huds[], int values[], int len) {
    uint8_t buffer[MAX_PAYLOAD] = {0};

    for (int i = 0; i < len; i++) {
        if (huds[i] == "odoInfo") {
            _OpOdoInfo_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mData = (uint32_t) values[i];
            notification.mFormat = 0;
            memcpy(buffer, &notification, sizeof(_OpOdoInfo_Notify));
        } else if (huds[i] == "odoInfoMile") {
            _OpOdoInfo_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mData = (uint32_t)values[i];
            notification.mFormat = 1;
            memcpy(buffer, &notification, sizeof(_OpOdoInfo_Notify));
        } else if (huds[i] == "dteChrgInfo") {
            _OpDTEChrgInfo_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mData = (uint32_t)values[i];
            notification.mFormat = 0;
            memcpy(buffer, &notification, sizeof(_OpDTEChrgInfo_Notify));
        } else if (huds[i] == "dteChrgInfoMile") {
            _OpDTEChrgInfo_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mData = (uint32_t)values[i];
            notification.mFormat = 1;
            memcpy(buffer, &notification, sizeof(_OpDTEChrgInfo_Notify));
        } else if (huds[i] == "leFrntTireMsgPSync") {
            _OpLeFrntTireMsgPSync_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mData = (uint32_t)values[i];
            notification.mResolution = 1;
            notification.mUnit = 0;
            notification.mAvailability = 1;
            memcpy(buffer, &notification, sizeof(_OpLeFrntTireMsgPSync_Notify));
        } else if (huds[i] == "riFrntTireMsgPSync") {
            _OpRiFrntTireMsgPSync_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mData = (uint32_t)values[i];
            notification.mResolution = 1;
            notification.mUnit = 0;
            notification.mAvailability = 1;
            memcpy(buffer, &notification, sizeof(_OpRiFrntTireMsgPSync_Notify));
        } else if (huds[i] == "leReTireMsgPSync") {
            _OpLeReTireMsgPSync_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mData = (uint32_t)values[i];
            notification.mResolution = 1;
            notification.mUnit = 0;
            notification.mAvailability = 1;
            memcpy(buffer, &notification, sizeof(_OpLeReTireMsgPSync_Notify));
        } else if (huds[i] == "riReTireMsgPSync") {
            _OpRiReTireMsgPSync_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mData = (uint32_t)values[i];
            notification.mResolution = 1;
            notification.mUnit = 0;
            notification.mAvailability = 1;
            memcpy(buffer, &notification, sizeof(_OpRiReTireMsgPSync_Notify));
        } else if (huds[i] == "riReTireMsgPSyncPsi") {
            _OpRiReTireMsgPSync_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mData = (uint32_t)values[i];
            notification.mResolution = 1;
            notification.mUnit = 1;
            notification.mAvailability = 1;
            memcpy(buffer, &notification, sizeof(_OpRiReTireMsgPSync_Notify));
        } else if (huds[i] == "riReTireMsgPSyncBar") {
            _OpRiReTireMsgPSync_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mData = (uint32_t)values[i];
            notification.mResolution = 1;
            notification.mUnit = 2;
            notification.mAvailability = 1;
            memcpy(buffer, &notification, sizeof(_OpRiReTireMsgPSync_Notify));
        } else if (huds[i] == "riReTireMsgPSyncAtm") {
            _OpRiReTireMsgPSync_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mData = (uint32_t)values[i];
            notification.mResolution = 1;
            notification.mUnit = 3;
            notification.mAvailability = 1;
            memcpy(buffer, &notification, sizeof(_OpRiReTireMsgPSync_Notify));
        } else if (huds[i] == "riReTireMsgPSyncNotAvailable") {
            _OpRiReTireMsgPSync_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mData = (uint32_t)values[i];
            notification.mResolution = 1;
            notification.mUnit = 3;
            notification.mAvailability = 4;
            memcpy(buffer, &notification, sizeof(_OpRiReTireMsgPSync_Notify));
        } else if (huds[i] == "leFrntTireMsgTSync") {
            _OpLeFrntTireMsgTSync_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mData = (int16_t)values[i];
            notification.mResolution = 1;
            notification.mUnit = 0;
            notification.mAvailability = 1;
            memcpy(buffer, &notification, sizeof(_OpLeFrntTireMsgTSync_Notify));
        } else if (huds[i] == "riFrntTireMsgTSync") {
            _OpRiFrntTireMsgTSync_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mData = (int16_t)values[i];
            notification.mResolution = 1;
            notification.mUnit = 0;
            notification.mAvailability = 1;
            memcpy(buffer, &notification, sizeof(_OpRiFrntTireMsgTSync_Notify));
        } else if (huds[i] == "leReTireMsgTSync") {
            _OpLeReTireMsgTSync_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mData = (int16_t)values[i];
            notification.mResolution = 1;
            notification.mUnit = 0;
            notification.mAvailability = 1;
            memcpy(buffer, &notification, sizeof(_OpLeReTireMsgTSync_Notify));
        } else if (huds[i] == "riReTireMsgTSync") {
            _OpRiReTireMsgTSync_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mData = (int16_t)values[i];
            notification.mResolution = 1;
            notification.mUnit = 0;
            notification.mAvailability = 1;
            memcpy(buffer, &notification, sizeof(_OpRiReTireMsgTSync_Notify));
        } else if (huds[i] == "riReTireMsgTSyncF") {
            _OpRiReTireMsgTSync_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mData = (int16_t)values[i];
            notification.mResolution = 1;
            notification.mUnit = 1;
            notification.mAvailability = 1;
            memcpy(buffer, &notification, sizeof(_OpRiReTireMsgTSync_Notify));
        } else if (huds[i] == "riReTireMsgTSyncNotAvailable") {
            _OpRiReTireMsgTSync_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mData = (int16_t)values[i];
            notification.mResolution = 1;
            notification.mUnit = 1;
            notification.mAvailability = 4;
            memcpy(buffer, &notification, sizeof(_OpRiReTireMsgTSync_Notify));
        } else if (huds[i] == "WheelKeyEventUser") {
            _OpWheelKeyEventUser_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mHardKeyTop = (uint8_t) values[0];
            notification.mHardKeyBottom = (uint8_t) values[1];
            notification.mHardKeyLeft = (uint8_t) values[2];
            notification.mHardKeyRight = (uint8_t) values[3];
            notification.mHardKeyConfirm = (uint8_t) values[4];
            notification.mHardKeyVR = (uint8_t) values[5];
            notification.mHardKeyCustom = (uint8_t) values[6];
            notification.mHardKeyMenu = (uint8_t) values[7];
            notification.mHardKeyMute = (uint8_t) values[8];
            memcpy(buffer, &notification, sizeof(_OpWheelKeyEventUser_Notify));
        } else if (huds[i] == "wheelKeyModeSync") {
            _OpWheelKeyModeSync_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.value = (uint8_t) values[i];
            memcpy(buffer, &notification, sizeof(_OpWheelKeyModeSync_Notify));
        } else if (huds[i] == "leFrntTireSymbolSync") {
            _OpLeFrntTireSymbolSync_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mStatus = (uint8_t)values[i];
            notification.mAvailability = 1;
            memcpy(buffer, &notification, sizeof(_OpLeFrntTireSymbolSync_Notify));
        } else if (huds[i] == "riFrntTireSymbolSync") {
            _OpRiFrntTireSymbolSync_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mStatus = (uint8_t)values[i];
            notification.mAvailability = 1;
            memcpy(buffer, &notification, sizeof(_OpRiFrntTireSymbolSync_Notify));
        } else if (huds[i] == "leReTireSymbolSync") {
            _OpLeReTireSymbolSync_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mStatus = (uint8_t)values[i];
            notification.mAvailability = 1;
            memcpy(buffer, &notification, sizeof(_OpLeReTireSymbolSync_Notify));
        } else if (huds[i] == "riReTireSymbolSync") {
            _OpRiReTireSymbolSync_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mStatus = (uint8_t)values[i];
            notification.mAvailability = 1;
            memcpy(buffer, &notification, sizeof(_OpRiReTireSymbolSync_Notify));
        } else if (huds[i] == "riReTireSymbolSyncNotAvailable") {
            _OpRiReTireSymbolSync_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mStatus = (uint8_t)values[i];
            notification.mAvailability = 4;
            memcpy(buffer, &notification, sizeof(_OpRiReTireSymbolSync_Notify));
        }else if (huds[i] == "dispTypOfElecDstToEmpty") {
            _OpDispTypOfElecDstToEmpty_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.value = (uint8_t)values[i];
            memcpy(buffer, &notification, sizeof(_OpDispTypOfElecDstToEmpty_Notify));
        } else if (huds[i] == "trip2AEC") {
            _OpTrip2AEC_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mData = values[i];
            notification.mFormat = 0;
            memcpy(buffer, &notification, sizeof(_OpTrip2AEC_Notify));
        } else if (huds[i] == "trip2AECMile") {
            _OpTrip2AEC_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mData = (uint8_t) values[i];
            notification.mFormat = 1;
            memcpy(buffer, &notification, sizeof(_OpTrip2AEC_Notify));
        } else if (huds[i] == "trip2Mileage") {
            _OpTrip2Mileage_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mData = values[i];
            notification.mFormat = 0;
            memcpy(buffer, &notification, sizeof(_OpTrip2Mileage_Notify));
        } else if (huds[i] == "trip2MileageMile") {
            _OpTrip2Mileage_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mData = (uint8_t) values[i];
            notification.mFormat = 1;
            memcpy(buffer, &notification, sizeof(_OpTrip2Mileage_Notify));
        } else if (huds[i] == "trip2AVS") {
            _OpTrip2AVS_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mData = values[i];
            notification.mFormat = 0;
            memcpy(buffer, &notification, sizeof(_OpTrip2AVS_Notify));
        } else if (huds[i] == "trip2AVSMile") {
            _OpTrip2AVS_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mData = (uint8_t) values[i];
            notification.mFormat = 1;
            memcpy(buffer, &notification, sizeof(_OpTrip2AVS_Notify));
        } else if (huds[i] == "trip2EDT") {
            _OpTrip2EDT_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mData = values[i];
            memcpy(buffer, &notification, sizeof(_OpTrip2EDT_Notify));
        } else if (huds[i] == "trip1AEC") {
            _OpTrip1AEC_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mData = values[i];
            notification.mFormat = 0;
            memcpy(buffer, &notification, sizeof(_OpTrip1AEC_Notify));
        } else if (huds[i] == "trip1AECMile") {
            _OpTrip1AEC_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mData = values[i];
            notification.mFormat = 1;
            memcpy(buffer, &notification, sizeof(_OpTrip1AEC_Notify));
        } else if (huds[i] == "trip1Mileage") {
            _OpTrip1Mileage_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mData = values[i];
            notification.mFormat = 0;
            memcpy(buffer, &notification, sizeof(_OpTrip1Mileage_Notify));
        } else if (huds[i] == "trip1MileageMile") {
            _OpTrip1Mileage_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mData = values[i];
            notification.mFormat = 1;
            memcpy(buffer, &notification, sizeof(_OpTrip1Mileage_Notify));
        } else if (huds[i] == "trip1EDT") {
            _OpTrip1EDT_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mData = values[i];
            memcpy(buffer, &notification, sizeof(_OpTrip1Mileage_Notify));
        } else if (huds[i] == "trip1AVS") {
            _OpTrip1AVS_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mData = values[i];
            notification.mFormat = 0;
            memcpy(buffer, &notification, sizeof(_OpTrip1AVS_Notify));
        } else if (huds[i] == "trip1AVSMile") {
            _OpTrip1AVS_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mData = values[i];
            notification.mFormat = 1;
            memcpy(buffer, &notification, sizeof(_OpTrip1AVS_Notify));
        } else if (huds[i] == "trip3AEC") {
            _OpTrip1AEC_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mData = values[i];
            notification.mFormat = 0;
            memcpy(buffer, &notification, sizeof(_OpTrip1AEC_Notify));
        } else if (huds[i] == "trip3Mileage") {
            _OpTrip1Mileage_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mData = values[i];
            notification.mFormat = 0;
            memcpy(buffer, &notification, sizeof(_OpTrip1Mileage_Notify));
        } else if (huds[i] == "trip3EDT") {
            _OpTrip1EDT_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mData = values[i];
            memcpy(buffer, &notification, sizeof(_OpTrip1Mileage_Notify));
        } else if (huds[i] == "trip3AVS") {
            _OpTrip1AVS_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mData = values[i];
            notification.mFormat = 0;
            memcpy(buffer, &notification, sizeof(_OpTrip1AVS_Notify));
        } else if (huds[i] == "oDO200mElcUse") {
            _OpTrip1AVS_Notify notification;
            memset(&notification, 0, sizeof(notification));
            notification.mData = values[i];
            notification.mFormat = 0;
            memcpy(buffer, &notification, sizeof(_OpTrip1AVS_Notify));
        }
    }

    bool res = send_message_dim_normal(ser_id, operation_id, buffer);
    return res;
}

bool set_ccsm_signal(int ser_id, int operation_id, std::string array[], int values[], int len) {
    LOGE("set_ccsm_signal HY11");
    uint8_t buffer[MAX_PAYLOAD] = {0};
    _OpCCSM_Notification notification;
    memset(&notification, 0, sizeof(notification));
    for (int i = 0; i < len; i++) {
        if(array[i]=="driModBut"){
            notification.driModBut=(uint8_t)values[i];
        }
        else if(array[i]=="cusKeyBut"){
            notification.cusKeyBut=(uint8_t)values[i];
        }
        else if(array[i]=="csdPowBut"){
            notification.csdPowBut=(uint8_t)values[i];
        }
    }
    memcpy(buffer, &notification, sizeof(_OpCCSM_Notification));
    bool res = send_message(ser_id, operation_id, buffer, sizeof(_OpCCSM_Notification));
    return res;
}

bool set_swsm_signal(int ser_id, int operation_id, std::string array[], int values[], int len) {
    LOGE("set_swsm_signal HY11");
    uint8_t buffer[MAX_PAYLOAD] = {0};
    _OpSWSM_Notification notification;
    memset(&notification, 0, sizeof(notification));
    for (int i = 0; i < len; i++) {
        if(array[i]=="steerWhlLeBtn"){
            notification.steerWhlLeBtn=(uint8_t)values[i];
        }
    }
    memcpy(buffer, &notification, sizeof(_OpSWSM_Notification));
    bool res = send_message(ser_id, operation_id, buffer, sizeof(_OpSWSM_Notification));
    return res;
}

bool set_fpl_signal(int ser_id, int operation_id, std::string array[], int values[], int len) {
    LOGE("set_fpl_signal HY11");
    uint8_t buffer[MAX_PAYLOAD] = {0};
    _OpFPL_Notification notification;
    memset(&notification, 0, sizeof(notification));
    for (int i = 0; i < len; i++) {
        if(array[i]=="prjtSwtFb"){
            notification.prjtSwtFb=(uint8_t)values[i];
        } else if(array[i]=="autPriFocLenFb"){
            notification.autPriFocLenFb=(uint8_t)values[i];
        } else if(array[i]=="priFocLenFb"){
            notification.priFocLenFb=(uint8_t)values[i];
        }else if(array[i]=="proScrenPosnUpDwnPosn"){
            notification.priFocLenFb=(uint8_t)values[i];
        }else if(array[i]=="proScrenPosnLeRiPosn"){
            notification.priFocLenFb=(uint8_t)values[i];
        }else if(array[i]=="autTrapCorrFb"){
            notification.priFocLenFb=(uint8_t)values[i];
        }else if(array[i]=="manTrapCorrnLeUpPosnUpDwnPosn"){
            notification.priFocLenFb=(uint8_t)values[i];
        }else if(array[i]=="manTrapCorrnLeUpPosnLeRiPosn"){
            notification.priFocLenFb=(uint8_t)values[i];
        }else if(array[i]=="manTrapCorrnLeDwnPosnUpDwnPosn"){
            notification.priFocLenFb=(uint8_t)values[i];
        }else if(array[i]=="manTrapCorrnLeDwnPosnLeRiPosn"){
            notification.priFocLenFb=(uint8_t)values[i];
        }else if(array[i]=="manTrapCorrnRiUpPosnUpDwnPosn"){
            notification.priFocLenFb=(uint8_t)values[i];
        }else if(array[i]=="manTrapCorrnRiUpPosnLeRiPosn"){
            notification.priFocLenFb=(uint8_t)values[i];
        }else if(array[i]=="manTrapCorrnRiDwnPosnUpDwnPosn"){
            notification.priFocLenFb=(uint8_t)values[i];
        }else if(array[i]=="manTrapCorrnRiDwnPosnLeRiPosn"){
            notification.priFocLenFb=(uint8_t)values[i];
        }
    }
    memcpy(buffer, &notification, sizeof(_OpFPL_Notification));
    bool res = send_message(ser_id, operation_id, buffer, sizeof(_OpFPL_Notification));
    return res;
}

bool set_sooti_signal(int ser_id, int operation_id, std::string array[], int values[], int len) {
    LOGE("set_sooti_signal HY11");
    uint8_t buffer[MAX_PAYLOAD] = {0};
    OpSwcOdoOfTripInfo_Notification notification;
    memset(&notification, 0, sizeof(notification));
    for (int i = 0; i < len; i++) {
        if(array[i]=="pa_AdasTripMileage") {
            notification.paadastripmileage.data = htonl(values[i]);
        } else if(array[i]=="pa_AdasTripDate") {
            notification.paadastripdate.data = htonl(values[i]);
        }
    }
    memcpy(buffer, &notification, sizeof(OpSwcOdoOfTripInfo_Notification));
    bool res = send_message(ser_id, operation_id, buffer, sizeof(OpSwcOdoOfTripInfo_Notification));
    return res;
}

bool set_powerctl_signal(int ser_id, int operation_id,std::string power[], int values[], int len){
    uint8_t buffer[MAX_PAYLOAD] = {0};
    OpPower_Notification notification;
    memset(&notification, 0, sizeof(notification));
    for (int i = 0; i < len; i++) {
        if(power[i]=="csdStatus"){
            notification.papowerres.csdStatus = htonl(values[i]);
        }else if(power[i]=="csdPlayWelcome"){
            notification.papowerres.csdPlayWelcome = htonl(values[i]);
        }else if(power[i]=="csdKeepOnTouch"){
            notification.papowerres.csdKeepOnTouch = htonl(values[i]);
        }else if(power[i]=="csdPwm"){
            notification.papowerres.csdPwm = htonl(values[i]);
        }else if(power[i]=="psdPwm"){
            notification.papowerres.psdPwm = htonl(values[i]);
        }else if(power[i]=="voltageLevel"){
            notification.papowerres.voltageLevel = htonl(values[i]);
        }else if(power[i]=="im"){
            notification.papowerres.im = htonl(values[i]);
        }else if(power[i]=="iplm"){
            notification.papowerres.iplm = htonl(values[i]);
        }else if(power[i]=="reserve"){
            notification.papowerres.reserve = htonl(values[i]);
        }
    }
    memcpy(buffer, &notification, sizeof(OpPower_Notification));
    bool res = send_message(ser_id, operation_id, buffer, sizeof(OpPower_Notification));
    return res;
}
